Вы можете решить эту проблему с помощью метода унаследованных хуков в Ruby, чтобы вы могли отслеживать все дочерние элементы.
class Parent
self.inherited(base)
self.children << base
end
end
class Child < Parent
def initialize
@@instances << self
end
def self.instances
@@instances
end
Теперь вы можете делать такие вещи, как Parent.children.each {| child | child.instances.collect (: & name)}. Если имя доступно: -)
Надеюсь, это поможет!