我尝试在has_many
/ belongs_to
关联中实施includes,与此示例相似:
class Author < ApplicationRecord
has_many :books, -> { includes :line_items }
end
class Book < ApplicationRecord
belongs_to :author
has_many :line_items
end
class LineItem < ApplicationRecord
belongs_to :book
end
当我@author.books
时,我在控制台中看到它加载Book
和LineItem
并显示Book
的记录,没有LineItem
的记录。我尝试@author.books.line_items
时遇到未定义的方法错误。 @author.line_items
也不起作用。
如何获取LineItem
的{{1}}条记录,好吗?谢谢!
答案 0 :(得分:5)
您需要向has_many
添加Author
关联。
像这样:has_many :line_items, through: :books, source: :line_items
。
然后,如果您执行author.line_items
,那么您将获得作者的LineItem
条记录。
您使用includes方法的方式允许您通过书籍访问line_items
。
类似这样的内容:author.books.first.line_items
,此代码不会转到数据库,因为includes
中的has_many :books, -> { includes :line_items }
已自动加载line_items