我正在尝试获取特定类型的所有派生类。在Rails 2+中,您可以说:
Class.subclasses_of SomeClass
这是因为在Rails 3中,activesupport / lib / active_support / core_ext / object / extends.rb消失了。
Rails 3中有替代品吗?有替代品。
答案 0 :(得分:2)
如果你想获得SomeClass的所有子类,那么你可以:
SomeClass.descendants
同样,如果要查找父类,请使用:
SomeClass.ancestors
这会将一个数组传给你,供你消费。从而允许你:
SomeClass.descendants.each { |klass| }
答案 1 :(得分:0)
总是有搜索ObjectSpace的选项 - 类似于:
classes = []
ObjectSpace.each_object(Class) do |klass|
SomeClass > klass
end
这有点不稳定但有用。有了更多的背景,也许有更好的方法?
答案 2 :(得分:0)
也许我误解了你的问题。我从未在Rails 2中使用subslasses_of方法。在Rails 3中,我只使用Foo.descendants
,它提供了一个继承自Foo
的类(及其属性)数组。非常方便。