У мене 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?
Будь-який внесок вітається.
se.student_id = <SOME_STUDENT_ID_VALUE>
було б неможливо?