如果关联是2级深度怎么做急切加载?

时间:2017-03-22 02:27:25

标签: ruby-on-rails activerecord

说我的模型如下:

class Book < ActiveRecord::Base
  has_many :chapters
end

class Chapter < ActiveRecord::Base
  belongs_to :book
  has_many :pages
end

class Pages < ActiveRecord::Base
  belongs_to :chapter
end

我目前正在这样做:

book = Book.find(1)

book.chapters.each do |chapter|
end

但现在我需要访问循环内的chapter.pages,所以我想急切加载每一章的所有页面。

我知道我可以为章节做到这一点:

book = Book.includes(:chapters).find(1)

但是如何加载页面呢?

1 个答案:

答案 0 :(得分:1)

您可以将数组传递给关联的名称:

Book.includes(chapters: [:pages])