我有一个模型对象,它是 ActiveRecord 的子类。此外,使用 STI,我定义了该对象的子类,它们定义了不同的类型和行为。结构看起来像这样:
class AppModule < ActiveRecord::Base
belongs_to :app
end
class AppModuleList < AppModule
end
class AppModuleSearch < AppModule
end
class AppModuleThumbs < AppModule
end
现在,在用户可以选择创建新 AppModules 的视图中,我希望他们从下拉菜单中进行选择。但是,我无法使用 subclasses() 方法获取 AppModule 的子类列表:
<% form_for(@app_module) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :type %><br />
<%= f.select(:type, options_from_collection_for_select(@app_module.subclasses().map{ |c| c.to_s }.sort)) %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
我得到:
NoMethodError: undefined method `subclasses' for #<AppModule:0x1036b76d8>
我会很感激任何帮助。非常感谢!