我知道,你可以做這樣的事情來加載Rails環境:ActiveRecord遷移和耙子任務不加載模型?
task :my_task => :environment do
MyModel.find(1)
end
但似乎在模型中的代碼不會被執行。我正在使用acts_as_audited,並且有一個很好的類函數可以檢索所有正在審計的模型。該調用看起來是這樣的:
Audit.audited_classes
,並指定型號爲審計,您只需將此行添加到您的模型:
acts_as_audited
當audited_classes在控制檯執行,我得到的數組我所有的審計課程;然而,當我從rake任務(或遷移)中執行它時,我得到一個空數組。
[編輯]
張望了一下打的多後,我注意到,如果模型沒有實際加載,直到他們被引用(即延遲加載)。我認爲在配置中將cache_classes設置爲true會解決這個問題,但它們似乎仍然被加載。
一種可能的解決方案是循環遍歷所有模型(如本文中所解釋的:Is there a way to get a collection of all the Models in your Rails app?),但這似乎有點冒失,我希望有一個更清晰的方法。
任何想法?
感謝
是啊......我已經這樣做,但它的一劈......我提起了票這裏:https://github.com/rails/rails/issues/5148 – gmoniey 2012-04-10 02:11:25
這不適用於名稱空間模型,我不認爲。你有沒有遇到名稱空間的用例? – jay 2014-03-13 10:13:59