Rails Activerecord查询用于连接多个表

时间:2015-07-21 17:03:08

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

模型

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

2 个答案:

答案 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)