Я знаю, что вы можете сделать что-то вроде этого, чтобы загрузить среду рельсов:Задачи ActiveRecord Migration & Rake не загружают модели?
task :my_task => :environment do
MyModel.find(1)
end
Но, похоже, что код в модели не выполняется. Я использую act_as_audited, и есть хорошая функция класса, которая извлекает все модели, которые проверяются. Вызов выглядит что-то вроде:
Audit.audited_classes
и указать модель, как быть проверяемым, то просто добавьте эту строку к моделям:
acts_as_audited
Когда audited_classes выполняется в консоли, я получаю массив все мои проверенные классы; однако, когда я выполняю его из задачи rake (или миграции), я получаю пустой массив.
[EDIT]
После игры вокруг немного больше, я заметил, что, если эти модели фактически не загружены, пока они не упоминаются (т.е. отложенной загрузки). Я думал, что установка cache_classes в true в config исправит это, но они все еще кажутся ленивыми.
Одним из возможных решений может стать цикл всех моделей (как объясняется в этом сообщении: Is there a way to get a collection of all the Models in your Rails app?), но это кажется немного взломанным, и я надеялся, что есть более чистый способ.
Любые идеи?
Благодаря
Да ... Я уже делал это, но его хак ... Я подал билет здесь: https://github.com/rails/rails/issues/5148 – gmoniey
это не работает с моделями с именами, я не думаю. вы когда-нибудь сталкивались с именными делами? – jay