:子类Rails中的替换3

时间:2011-09-03 15:13:22

标签: ruby-on-rails ruby-on-rails-3

现在我有:

  @models = ActiveRecord::Base.send(:subclasses)

但是我在日志中得到了这个:

DEPRECATION WARNING: subclasses is deprecated and will be removed from Rails 3.0 (use descendants instead). (called from send at /Users/*******/m3p0/app/controllers/roles_controller.rb:50)

我应该将:subclasses替换为什么?

1 个答案:

答案 0 :(得分:3)

在警告中,它表示使用后代。

ActiveRecord::Base.send(:descendants)

此外,这些方法是公开的,因此您不需要使用.send语法,您可以明确地调用它。

ActiveRecord::Base.descendants

以下是我的某个应用的输出:

ruby-1.9.2-p180 :001 > ActiveRecord::Base.subclasses
 => [Achievement(id: integer... 
ruby-1.9.2-p180 :003 >   ActiveRecord::Base.descendants
 => [Achievement(id: integer...