Подтвердить что ты не робот

Как удовлетворить ассоциацию нагрузки для массива модельных записей

У меня есть массив записей модели Rails. Можно ли желать загружать связь для всех этих записей за один раз (запрос)?

Иногда у меня только массив, а не AR:: Scope. И иногда я хочу, чтобы динамически выбирать, что нужно загружать позже.

4b9b3361

Ответ 1

В Rails 3 можно использовать preloader, чтобы присоединить ассоциации к существующим записям.

ActiveRecord::Associations::Preloader.new(posts,:comments).run()

В Rails 4.1+ сигнатура вызова немного изменилась:

ActiveRecord::Associations::Preloader.new.preload(posts,:comments)

Ответ 2

Ну, вы можете переделать эти объекты. Map ': id' над вашим массивом, чтобы получить идентификаторы записей, а затем переделать, на этот раз с нетерпением загрузки.

Если ваш массив, скажем, Post записей модели, posts, то это будет:

Post.find(posts.map &:id).includes(:blah)