Student has_many enrollments
有没有办法只查看没有注册的学生?
类似的东西:
@students = Student.includes(:enrollments).where(Enrollment.none? })
答案 0 :(得分:0)
您可以调整我的other answer并说出"给我id
不会出现在注册表中的学生"像这样:
enrolled = Enrollment.select(:student_id)
@students = Student.where.not(:id => enrolled)
这将在数据库中使用子查询。
另一种方法是进行LEFT JOIN并查找不满足连接条件的行:
Student.joins('left join enrollments on students.id = enrollments.student_id')
.where(:enrollments => { :id => nil })