Rails查询不相等



我的rails应用程序有3个组件:-用户(有很多作品和评论)-作品(博客文章)(属于用户,有很多评论)-comments(注释属于用户和工作)

我试图在一个页面上为一个特定的用户显示所有的评论,除了对博客文章的评论,属于他/她的。我的查询在控制器中应该是什么样子?

这是我到目前为止所知道的。它根本不加载任何注释。

    @user = User.find(params[:id])
    @works = Work.pluck(:user_id)
    @comments = @user.comments.where(is_boolean_value: true).where(['user_id NOT IN(?)', @works]).all

如何更改此查询,以便显示用户在用户不拥有该作品的情况下所做的所有评论?

谢谢!- b

第一个问题是

Work.pluck(:user_id)

获取具有表Work对象的任何用户的user_id。相反,获取用户创建的项的工作id:

@works = @user.works.map {|obj| obj.id}

然后要求数据库给出属于该用户但不属于其作品的所有评论:

@comments = @user.comments.where('work_id NOT IN(?)', @works)

最新更新