Mam obiekt modelu, który podklasuje ActiveRecord. Dodatkowo, używając STI, zdefiniowałem podklasy tego obiektu, które definiują różne typy i zachowania. Struktura wygląda mniej więcej tak:Jak uzyskać tablicę podklas w Railsach
class AppModule < ActiveRecord::Base
belongs_to :app
end
class AppModuleList < AppModule
end
class AppModuleSearch < AppModule
end
class AppModuleThumbs < AppModule
end
Teraz w widoku, w którym użytkownik ma możliwość tworzenia nowych AppModules chciałbym je wybrać z menu rozwijanego. Jednak nie udało się uzyskać listę podklas AppModule wykorzystaniem podklasy() metoda:
<% 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 %>
uzyskać:
NoMethodError: undefined method `subclasses' for #<AppModule:0x1036b76d8>
będę wdzięczny za każdą pomoc. Wielkie dzięki!
Którą wersję Ruby on Rails używasz? – outis
Rails 2.3.8, Ruby 1.8.7 –
Klasa ma metodę "potomków" w [3.0.0] (http://rubydoc.info/docs/rails/3.0.0/Class#descendants-instance_method), ale nie [2.3.8] (http://rubydoc.info/docs/rails/2.3.8/Class#descendants-instance_method). – outis