我有一個模型對象,它的子類ActiveRecord。另外,使用STI,我定義了這個對象的子類,它定義了不同的類型和行爲。結構看起來是這樣的:現在如何在Rails中獲取一個子類的數組
class AppModule < ActiveRecord::Base
belongs_to :app
end
class AppModuleList < AppModule
end
class AppModuleSearch < AppModule
end
class AppModuleThumbs < AppModule
end
,在用戶創建新的AppModules選擇一個觀點,我想他們從下拉菜單中選擇。不過,我一直沒能得到使用的子類(的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>
我會很感激的任何幫助。非常感謝!
您正在使用哪個版本的Ruby on Rails? – outis 2010-11-14 11:43:32
Rails 2.3.8,Ruby 1.8.7 – 2010-11-14 12:02:44
類在[3.0.0](http://rubydoc.info/docs/rails/3.0.0/Class#descendants-instance_method)中有'descendents'方法,但不是[2.3.8](http://rubydoc.info/docs/rails/2.3.8/Class#descendants-instance_method)。 – outis 2010-11-14 12:21:17