我的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)