Rails Active Record Query仅加入,任何

Student has_many :enrollments 

通过此查询,我看到那些具有true注册的学生,以及同时具有false注册的学生:

 @students = Student.joins(:enrollments).where(enrollments: { is_active: false }) 

是否有一些“仅”属性我可以添加以查看只有活跃注册的学生?

一种简单明了的方法是找到不活跃注册的学生,然后明确排除他们。 就像是:

 have_inactives = Enrollment.where(is_active: false).select(:student_id) @students = Student.joins(:enrollments).where.not(id: have_inactives) 

joins(:enrollments)将过滤掉没有任何注册的Student条目, where.not(...)将排除所有具有非活动注册的学生(使用子查询,因此所有工作仍将在它所属的数据库)。


顺便说一下,你可能想要修改你的“注册”拼写,双l拼写错误可能最终会让你或其他程序员疯狂。