ActiveRecord查询连接记录不存在的位置

时间:2017-08-28 18:42:16

标签: rails-activerecord

假设这样的模型:

Student 
has_many :assignments

Assignment 
belongs_to :student

作业有一个日期字段" date"代表提交作业的日期。

我如何使用带有.where()的ActiveRecord查询,在date = mm / dd / yyyy之后检索所有没有赋值的Student对象?我更喜欢使用直接的ActiveRecord并且没有特定于数据库的SQL。

谢谢!

1 个答案:

答案 0 :(得分:1)

这是an anti-join

Student.where("not exists (select 1 from assignments where created_at > ? and assignments.student_id = students.id)", some_date)

您可以使用where_exists gem

以更少的SQL执行此操作
Student.where_not_exists(:assignments, "created_at > '#{some_date}'")