假设这样的模型:
Student
has_many :assignments
Assignment
belongs_to :student
作业有一个日期字段" date"代表提交作业的日期。
我如何使用带有.where()的ActiveRecord查询,在date = mm / dd / yyyy之后检索所有没有赋值的Student对象?我更喜欢使用直接的ActiveRecord并且没有特定于数据库的SQL。
谢谢!
答案 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}'")