轨道控制器查找没有关联的记录


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 })

最新更新