rails includes guide active ruby-on-rails ruby activerecord

ruby-on-rails - includes - ruby rails guide



obtener una lista de todos los modelos de rieles (5)

Necesito una lista con todos los modelos (nombres de clase) que tienen el patrón "Cubo" al final.

ejemplo:

todos mis modelos: ModelFoo, ModelBar, ModelBarCube, Mode2BarCube

lo que necesito:

[''ModelBarCube'', ''Mode2BarCube'']


Como Rails no carga clases a menos que las necesite, debe leer los modelos de la carpeta. Aquí está el código

Dir.glob(Rails.root + ''/app/models/*.rb'').each { |file| require file } @models = Object.subclasses_of(ActiveRecord::Base).select { |model| model.name[-4..-1] == "Cube" }


Estaba buscando en Google respuesta cómo mostrar todos los modelos de Ralis, la combinación de respuestas aquí fue muy útil, gracias.

Así que aquí hay una combinación de soluciones que funciona incluso para tablas STI en Rails.

#Since Rails doesn''t load classes unless it needs them, you must read the models from the folder. Here is the code Dir[Rails.root.to_s + ''/app/models/**/*.rb''].each do |file| begin require file rescue end end models = ActiveRecord::Base.subclasses.collect { |type| type.name }.sort models.each do |model| print model print '' '' end


Para rieles 3

@models = ActiveRecord::Base. descendants. select{|x| x.name[-4..-1] == "Cube"}


en los carriles 3 intercambiarías @models por:

@models = ActiveRecord::Base.subclasses.collect { |type| type.name }.sort


@models = ActiveRecord::Base.descendants.map(&:name)

le proporciona todos los nombres de modelos que heredan de ActiveRecord::Base o es una subclase de cualquier modelo existente.