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")
,但实际上有效。我该怎么做呢?
答案 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)