【问题标题】:Rails Active Record Query joins only, anyRails Active Record Query 仅连接,任何
【发布时间】:2025-12-12 10:00:02
【问题描述】:
Student has_many :enrollments
通过这个查询,我看到了那些有true 注册的学生,还有那些同时、true 和false 注册的学生:
@students = Student.joins(:enrollments).where(enrollments: { is_active: false })
我可以添加一些“唯一”属性来查看仅有效注册的学生吗?
【问题讨论】:
标签:
ruby-on-rails
activerecord
rails-activerecord
【解决方案1】:
一种直接的方法是找到不活跃注册的学生,然后明确排除他们。比如:
have_inactives = Enrollment.where(is_active: false).select(:student_id)
@students = Student.joins(:enrollments).where.not(id: have_inactives)
joins(:enrollments) 将过滤掉没有任何注册的 Student 条目,where.not(...) 将排除所有注册不活跃的学生(使用子查询,因此所有工作仍将在数据库中它属于)。
顺便说一句,您可能想修正“enrolment”的拼写,双 l 的拼写错误可能最终会让您或其他程序员发疯。