私は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テーブルに存在しないCoursesテーブルのコースのリストをクエリしたいと思います。
おそらく左結合が進むべき道であることがわかりましたが、railsの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
このクエリをRails4の方法で実行するにはどうすればよいですか?
どんな入力でも大歓迎です。
se.student_id = <SOME_STUDENT_ID_VALUE>
に不可能でしょうか?