Ich weiß, dass Sie etwas tun können, um die Schienen-Umgebung zu laden:ActiveRecord Migration & Rake-Aufgaben laden keine Modelle?
task :my_task => :environment do
MyModel.find(1)
end
Aber es scheint, den Code in den Modellen nicht ausgeführt. Ich benutze acts_as_audited, und es gibt eine nette Klassenfunktion, die alle Modelle, die auditiert werden, aufruft. Der Aufruf sieht so etwas wie:
Audit.audited_classes
Und ein Modell zu spezifizieren als überprüfbare sein, geben Sie einfach die folgende Zeile in Ihre Modelle hinzu:
acts_as_audited
Wenn audited_classes in der Konsole ausgeführt wird, erhalte ich eine Reihe von alle meine geprüften Klassen; Wenn ich es jedoch innerhalb einer Rake-Task (oder einer Migration) ausführe, erhalte ich ein leeres Array.
[EDIT]
Nach mehr um ein wenig zu spielen, habe ich bemerkt, dass, wenn die Modelle nicht tatsächlich geladen, bis sie (das heißt ein träges Laden) referenziert werden. Ich dachte, dass das Setzen von cache_classes auf true in der Config dies beheben würde, aber sie scheinen immer noch faul geladen zu sein.
Eine mögliche Lösung wäre, alle Modelle zu durchlaufen (wie in diesem Beitrag erläutert: Is there a way to get a collection of all the Models in your Rails app?), aber das scheint ein bisschen hacky, und ich hatte gehofft, es gibt einen saubereren Weg.
Irgendwelche Ideen?
Dank
Ja ... ich war schon das zu tun, aber es ist ein Hack ... reichte ich ein Ticket hier: https://github.com/rails/rails/issues/5148 – gmoniey
dies funktioniert nicht mit Namespace-Modellen, ich glaube nicht. Hast du jemals einen Namespace-Usecase gefunden? – jay