ruby-on-rails - includes - ruby rails guide
obtener una lista de todos los modelos de rieles (5)
Esta pregunta ya tiene una respuesta aquí:
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.