Mam 3 modele:
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
Chcę zapytać o listę kursów w tabeli Kursy, które nie istnieją w tabeli StudentEnrollments, które są powiązane z określonym studentem.
Odkryłem, że być może Left Join jest właściwą drogą, ale wydaje się, że joins () w railsach akceptuje tylko tabelę jako argument. Zapytanie SQL, które moim zdaniem zrobiłoby to, czego chcę, to:
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
Jak wykonać to zapytanie sposobem Rails 4?
Każdy wkład jest mile widziany.
se.student_id = <SOME_STUDENT_ID_VALUE>
byłby niemożliwy?