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拼写错误可能最终会让你或其他程序员疯狂。