Tengo un objeto modelo que subclasifica ActiveRecord. Además, al usar STI, he definido subclases de este objeto, que definen diferentes tipos y comportamientos. La estructura es como la siguiente:Cómo obtener una matriz de subclases en Rails
class AppModule < ActiveRecord::Base
belongs_to :app
end
class AppModuleList < AppModule
end
class AppModuleSearch < AppModule
end
class AppModuleThumbs < AppModule
end
Ahora, en una vista donde el usuario tiene la opción de crear nuevos AppModules, me gustaría que para seleccionar de un menú desplegable. Sin embargo no he podido obtener una lista de las subclases de AppModule utilizando las subclases() Método:
<% 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 %>
me sale:
NoMethodError: undefined method `subclasses' for #<AppModule:0x1036b76d8>
lo agradecería cualquier ayuda. ¡Muchas gracias!
¿Qué versión de Ruby on Rails estás usando? – outis
Rails 2.3.8, Ruby 1.8.7 –
La clase tiene un método 'descendientes' en [3.0.0] (http://rubydoc.info/docs/rails/3.0.0/Class#descendants-instance_method), pero no [2.3.8] (http://rubydoc.info/docs/rails/2.3.8/Class#descendants-instance_method). – outis