Rails查询不相等

时间:2013-05-22 01:15:31

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

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

我正在尝试在特定用户的页面上显示所有评论,但在属于他/她的博客帖子上发表的评论除外。我的查询在控制器中应该是什么样的?

这是我到目前为止所拥有的。它根本不加载任何评论。

    @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

1 个答案:

答案 0 :(得分: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)