我有 4 个模型:
class Category < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
belongs_to :category
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
belongs_to :user
end
class User < ActiveRecord::Base
has_many :comments
end
我需要获取所有包含某个用户发表评论的帖子的类别。我正在生成一个包含所有类别和帖子的 json,但没有评论。
我正在使用的查询:
@categories = Category.includes(:posts => :comments).where(:comments => { :user_id => params[:user_id] } )
我正在使用 rabl:
collection @categories
attributes ...
child :posts do
attributes ...
end
但这得到了所有的评论。如果我使用连接而不是包含,我将遇到 n+1 问题。
我应该如何进行查询?