【发布时间】:2014-08-13 01:45:13
【问题描述】:
我有 3 个模型:
class Student < ActiveRecord::Base
has_many :student_enrollments, dependent: :destroy
has_many :courses, through: :student_enrollments
end
class Course < ActiveRecord::Base
has_many :student_enrollments, dependent: :destroy
has_many :students, through: :student_enrollments
end
class StudentEnrollment < ActiveRecord::Base
belongs_to :student
belongs_to :course
end
我希望在 Courses 表中查询与某个学生相关联的 StudentEnrollments 表中不存在的课程列表。
我发现也许 Left Join 是要走的路,但似乎 rails 中的 joins() 只接受一个表作为参数。 我认为会做我想做的 SQL 查询是:
SELECT *
FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = se.course_id
WHERE se.id IS NULL AND se.student_id = <SOME_STUDENT_ID_VALUE> and c.active = true
如何以 Rails 4 方式执行此查询?
感谢任何输入。
【问题讨论】:
-
如果StudentEnrollments中不存在该记录,那么
se.student_id = <SOME_STUDENT_ID_VALUE>肯定是不可能的吗?
标签: sql ruby-on-rails ruby-on-rails-4 rails-activerecord mysql2