现在我有:
@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
替换为什么?
答案 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...