У меня 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, связанных с определенным студентом.
Я обнаружил, что, возможно, лучше всего пойти с левым соединением, но кажется, что 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?
Любой вклад приветствуется.
se.student_id = <SOME_STUDENT_ID_VALUE>
будет невозможно?