Tôi có 3 mô hình:
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
Tôi muốn truy vấn danh sách các khóa học trong bảng Khóa học, không tồn tại trong bảng StudentEnrollments được liên kết với một sinh viên nhất định.
Tôi thấy rằng có lẽ Kết nối trái là cách để đi, nhưng có vẻ như tham gia () trong đường ray chỉ chấp nhận một bảng làm đối số. Truy vấn SQL mà tôi nghĩ sẽ làm những gì tôi muốn là:
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
Làm cách nào để thực hiện truy vấn này theo cách Rails 4?
Bất kỳ đầu vào nào được đánh giá cao.
se.student_id = <SOME_STUDENT_ID_VALUE>
sẽ là không thể?