ActiveRecord :: Base.send (: потомки) не возвращает все модели, если их не трогать - PullRequest
2 голосов
/ 29 августа 2011

Обновление: Эта проблема больше не существует в Rails 3.2

Я пытаюсь получить массив, содержащий все модели в моемрельсы 3 приложения.Я пытаюсь:

ActiveRecord::Base.send(:descendants)

за то же самое.Аналогичное обсуждение произошло в вопросе: Есть ли способ получить коллекцию всех моделей в вашем приложении Rails? .Как указано в одном из ответов, нам нужно коснуться моделей для отображения моделей.Именно с этой проблемой я сталкиваюсь.

В моем приложении rails более десятка моделей, но

ActiveRecord::Base.send(:descendants) 

возвращает массив второго размера.Массив имеет только модели User и ActiveRecord :: SessionStore :: Session.Я не получаю другие модели, пока не коснусь модели, коснувшись, скажем, вызова Comment.new Как я могу получить все перечисленные модели, не затрагивая все модели?

Еще одна дополнительная информация, которая может быть полезнойв том, что я использую устройство для аутентификации.Возможно, devise делает что-то желаемым образом в том, что касается модели User, и я не делаю этого с другими моделями.

Заранее большое спасибо.

Ответы [ 2 ]

3 голосов
/ 05 августа 2013

Если cache_classes включен (по умолчанию он включен в разработке, а не в производстве), сначала запустите:

Rails.application.eager_load!
1 голос
/ 21 мая 2012

Сначала нужно загрузить модели:

Dir[Rails.root + "app/models/**/*.rb"].each do |path|
    require path
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...