Je besoin d'une liste avec tous les modèles (class_names) qui ont le motif "Cube" à la fin.
exemple:
tous mes modèles: ModelFoo, ModelBar, ModelBarCube, Mode2BarCube
ce que je besoin:
['ModelBarCube', 'Mode2BarCube']
Je besoin d'une liste avec tous les modèles (class_names) qui ont le motif "Cube" à la fin.
exemple:
tous mes modèles: ModelFoo, ModelBar, ModelBarCube, Mode2BarCube
ce que je besoin:
['ModelBarCube', 'Mode2BarCube']
Étant donné que Rails ne charge pas les classes à moins qu'il en ait besoin, vous devez lire les modèles du dossier. Voici le code
Dir.glob(Rails.root + '/app/models/*.rb').each { |file| require file }
@models = Object.subclasses_of(ActiveRecord::Base).select { |model|
model.name[-4..-1] == "Cube"
}
J'étais en train de chercher sur Google comment afficher tous les modèles Ralis, la combinaison de réponses ici était très utile, merci.
voici donc une combinaison de solutions qui fonctionne même pour les tables STI sur Rails
# Comme Rails ne charge pas les classes sauf si elles en ont besoin, vous devez lire les modèles du dossier. Voici le 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
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.