У меня есть 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
Я хочу запросить список курсов в таблице Курсов, которые не существуют в таблице StudentEnrollments, которые связаны с определенным учеником.
Я обнаружил, что, возможно, Left Join - путь, но кажется, что joins() в rails принимает только таблицу как аргумент. 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?
Приветствуется любой ввод.