Rails查询记录用户尚未通过关联模型进行审查

时间:2019-04-18 21:33:23

标签: sql ruby-on-rails database postgresql rails-activerecord

我正在尝试执行一个查询,当前用户只能看到他/她尚未查看过的项目。审查或多或少是通过/未通过系统,而不是书面声明。在用户交互创建评论之前,不存在任何评论。

项目具有用户外键,而评论具有用户和项目外键。

class User < ApplicationRecord
  has_many :projects, dependent: :destroy
  has_many :reviews, through: :projects, dependent: :destroy  
end

class Review < ApplicationRecord
  belongs_to :user
  belongs_to :project
end

class Project < ApplicationRecord
  belongs_to :user
  has_many :reviews, dependent: :destroy
end

输出进入基本的<%@ feed.each | item | %> <%end%>循环。

以前的尝试:

@feed = Project.where("id NOT IN (SELECT DISTINCT(project_id) FROM reviews)").where("#{current_user.id} IN (SELECT user_id FROM reviews)")

我要实现的输出是查询所有项目记录,这些记录不属于当前用户并且没有被当前用户查看。

编辑:

经过更多的摆弄和研究,我想我找到了解决方案。

@feed = Project.where("NOT EXISTS (SELECT * FROM reviews WHERE reviews.project_id = projects.id AND reviews.user_id = #{current_user.id})")

我在两个测试帐户中尝试过,一个带有评论,一个没有评论。两者的正确计数都回来了,对于是否合适的查询,我仍然持开放态度。

0 个答案:

没有答案