模型
class AdminUser < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
has_many :comments
end
我希望在此AdminUser下的每个用户创建的每个帖子下获得所有评论的列表。
要获得1位用户完成的每个帖子下的所有评论都很容易。我会使用像
这样的东西comments=Comment.joins(:post).where("posts.user_id= ?",userid.to_s )
但在这里,我需要再提高一级。即获得每个用户在1 admin_user下发布的每条帖子的评论。我之前从未使用过多次加入,所以我有点困惑。
如果我可以在字符串中使用 Activerecord关联,它可能看起来像
comments=Comment.joins(:post).joins(:user).where("posts.user.admin_user.id=?",adminuser_id)
但我不能使用 posts.user.admin_user
答案 0 :(得分:2)
我们首先获取属于admin用户的用户ID,然后习惯使用您的查询选择评论。
user_ids = admin_user.users.pluck(:id)
comments=Comment.joins(:post).where("posts.user_id IN (?)", user_ids )
我假设您粘贴的查询有效。
答案 1 :(得分:0)
应该是
Comment.joins(post: :user)