मेरे पास 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
मैं पाठ्यक्रम तालिका में पाठ्यक्रमों की एक सूची के लिए क्वेरी करना चाहता हूं, जो कि उस छात्र-परीक्षा तालिका में मौजूद नहीं हैं जो एक निश्चित छात्र के साथ जुड़ी हुई हैं।
मैंने पाया कि शायद लेफ्ट ज्वाइन जाने का रास्ता है, लेकिन ऐसा लगता है कि रेल (जोड़) केवल एक टेबल को तर्क के रूप में स्वीकार करते हैं। 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
मैं इस क्वेरी को 4 तरीके से कैसे निष्पादित करूं?
किसी भी इनपुट की सराहना की है।
se.student_id = <SOME_STUDENT_ID_VALUE>
से असंभव होगा?