Activerecord 是否有Rails 3替换的子类_?

Activerecord 是否有Rails 3替换的子类_?,activerecord,ruby-on-rails-3,Activerecord,Ruby On Rails 3,我正在尝试获取特定类型的所有派生类。在Rails 2+中,您可以说: Class.subclasses_of SomeClass 这是因为activesupport/lib/active\u support/core\u ext/object/extensing.rb在Rails 3中消失了 Rails 3中是否有替换件?有其他选择。始终可以选择搜索ObjectSpace,例如: classes = [] ObjectSpace.each_object(Class) do |klass|

我正在尝试获取特定类型的所有派生类。在Rails 2+中,您可以说:

Class.subclasses_of SomeClass
这是因为activesupport/lib/active\u support/core\u ext/object/extensing.rb在Rails 3中消失了


Rails 3中是否有替换件?有其他选择。

始终可以选择搜索ObjectSpace,例如:

classes = []
ObjectSpace.each_object(Class) do |klass|
  SomeClass > klass
end

这有点不可靠,但很有用。有了更多的背景,也许有更好的方法?

也许我误解了你的问题。我从未在Rails 2中使用过方法的子类。在Rails3中,我只使用了
Foo.substands
,它提供了一个从
Foo
继承的类数组(及其属性)。非常方便。

如果要获取某个类的所有子类,请执行以下操作:

SomeClass.descendants
同样,如果要查找父类,请使用:

SomeClass.ancestors
这将传回一个数组供您使用。因此,您可以:

SomeClass.descendants.each { |klass| }

子类在Rails 3中折旧。改用子代。