Student has_many enrollments
有没有办法只查看没有注册的学生?
像这样:
@students = Student.includes(:enrollments).where(Enrollment.none? })
你可以改编我的另一个答案,说"给我那些id
没有出现在招生表中的学生",就像这样:
enrolled = Enrollment.select(:student_id)
@students = Student.where.not(:id => enrolled)
这将使用数据库内的子查询。
另一种方法是执行左连接并查找不满足连接条件的行:
Student.joins('left join enrollments on students.id = enrollments.student_id')
.where(:enrollments => { :id => nil })