問題:
使用具有以下模型的Rails 應用程式:學生、Course 和StudentEnrollment,如何查詢Courses 表中不關聯的課程清單透過StudentEnrollment 表與學生聯繫?
解決方案:
要實現此目的,您可以使用 ActiveRecord 中的 JOIN 操作。但是,與接受表名作為參數的 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
在Rails 中,您可以按如下方式執行此查詢:
Course.joins("LEFT JOIN student_enrollments ON courses.id = student_enrollments.course_id") .where("student_enrollments.id IS NULL AND student_enrollments.student_id = ?, courses.active = ?", <SOME_STUDENT_ID_VALUE>, true)
此查詢檢索所有與指定學生不關聯的課程Student_enrollments 表,同時也確保僅包含活躍課程。
以上是如何使用 ActiveRecord 在 Rails 應用程式中尋找未註冊的課程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!