rails controller找不到关联的记录

时间:2017-01-05 23:38:39

标签: ruby-on-rails activerecord rails-activerecord

Student has_many enrollments

有没有办法只查看没有注册的学生?

类似的东西:

@students = Student.includes(:enrollments).where(Enrollment.none? })

1 个答案:

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