Tengo 3 modelos:
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
Deseo consultar una lista de cursos en la tabla Cursos, que no existen en la tabla StudentEnrollments que están asociados con un estudiante determinado.
Descubrí que quizás Left Join es el camino a seguir, pero parece que joins () en rieles solo aceptan una tabla como argumento. La consulta SQL que creo que haría lo que quiero es:
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
¿Cómo ejecuto esta consulta de la manera Rails 4?
Se agradece cualquier aporte.
se.student_id = <SOME_STUDENT_ID_VALUE>
sería imposible?