Rails中有多个嵌套包含

时间:2014-04-29 11:57:41

标签: ruby-on-rails activerecord

假设我的Rails 3应用程序中有四个模型,组,用户,帖子和评论。关系是:

Groups has_many Users
Users has_many Posts
Posts has_many Comments

(所有在另一个方向都有belongs_to)

如何在一个查询中获取属于group.id的所有评论? 我不能停止考虑使用多个includes()(但到目前为止没有成功),如

comments = Comment.includes(:Post).includes(:User).includes(:Group).where("groups.id IS ?", group.id)

2 个答案:

答案 0 :(得分:9)

您仍然可以使用包含

comments = Comment.includes(post: {user: :group}).where('groups.id = ?', group.id)

Rails 4.1 指南

中查看此topic

答案 1 :(得分:7)

您可以使用eager_load方法:

comments = Comment.eager_load(post: {user: :group}).where('groups.id = ?', group.id)

您可以在此blog post中找到有关此类查询的更多信息。