Ich habe 3 Modelle:
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
Ich möchte eine Liste von Kursen in der Tabelle "Kurse" abfragen, die in der Tabelle "StudentEnrollments" nicht vorhanden sind und einem bestimmten Studenten zugeordnet sind.
Ich fand, dass Left Join vielleicht der richtige Weg ist, aber es scheint, dass joins () in Rails nur eine Tabelle als Argument akzeptiert. Die SQL-Abfrage, von der ich denke, dass sie das tun würde, was ich will, ist:
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
Wie führe ich diese Abfrage auf Rails 4-Weise aus?
Jede Eingabe wird geschätzt.
se.student_id = <SOME_STUDENT_ID_VALUE>
wäre dies sicherlich unmöglich?