1

我的 rails 应用有 3 个组件: -users(有很多作品和评论) -works(博客文章)(属于用户,有很多评论) -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

4

1 回答 1

3

第一个问题是

Work.pluck(:user_id)

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

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

然后让数据库给你所有属于该用户但不属于他的作品之一的评论:

@comments = @user.comments.where('work_id NOT IN(?)', @works)
于 2013-05-22T01:28:14.950 回答