Rails找到关系不包含id的记录

时间:2016-06-24 20:43:50

标签: ruby-on-rails rails-activerecord

class Question
  has_many :participants, :class_name => "User"
end

class User
  has_and_belongs_to_many :questions
end

现在,在给定用户的情况下,我想找到该用户尚未参与的所有问题。

类似于Question.where("participants DOES NOT INCLUDE user.id"),但实际上有效。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

Question.joins(:participants).where("users.id != ?", user.id)

答案 1 :(得分:0)

最好的选择 - 在可读性和可组合性方面 - 是一个子查询:

Question.where(
  "NOT EXISTS (SELECT 1 FROM questions_users WHERE question_id=questions.id
   AND user_id=?)", user.id)