Student has_many :enrollments通过这个查询,我可以看到那些有true注册的学生,也有那些同时拥有、、true和false注册的学生:
@students = Student.joins(:enrollments).where(enrollments: { is_active: false })是否有一些“只有”属性,我可以添加,以看到只有的学生只有活动注册?
发布于 2017-01-05 23:42:46
一种直截了当的方法是找到不活跃的学生,然后明确地将他们排除在外。类似于:
have_inactives = Enrollment.where(is_active: false).select(:student_id)
@students = Student.joins(:enrollments).where.not(id: have_inactives)joins(:enrollments)将过滤掉没有任何注册的Student条目,而where.not(...)将排除所有非活动注册的学生(使用子查询,所以所有的工作仍然在它所属的数据库中)。
顺便说一句,你可能想要修正你的拼写“注册”,双重-我的错误拼写可能会导致你或其他程序员疯狂。
https://stackoverflow.com/questions/41495578
复制相似问题