在我的Rails應用程序中,我有2個模型:學生和課程。ActiveRecord:通過嵌套記錄屬性篩選記錄
學生有很多課程。
將命令Student.first.courses運行到rails控制檯中會導致屬於返回的第一個學生的課程集合。
我想知道的是,如果有可能編寫一個命令來檢查是否有任何學生有特定的課程。
例如,如果我想看看是否有任何「英語」的學生作爲他們的課程之一,我會如何寫這個?
任何幫助將不勝感激 - 謝謝!
在我的Rails應用程序中,我有2個模型:學生和課程。ActiveRecord:通過嵌套記錄屬性篩選記錄
學生有很多課程。
將命令Student.first.courses運行到rails控制檯中會導致屬於返回的第一個學生的課程集合。
我想知道的是,如果有可能編寫一個命令來檢查是否有任何學生有特定的課程。
例如,如果我想看看是否有任何「英語」的學生作爲他們的課程之一,我會如何寫這個?
任何幫助將不勝感激 - 謝謝!
從安德烈的回答之後,你可以換,最多在一個範圍內的學生模型中,像這樣:
scope :taking, ->(subject_name) { joins(:courses).where(courses: {name: subject_name})}
,然後用使用它:
Student.taking("English")
當然屬於學生?通過這種方式,您將擁有許多相同課程的實例(每個學生需要一次),您可能需要重新訪問您的設計並擁有它,Student _ has和many_(或_has many through_,閱讀兩者的文檔),這樣你就可以在學生中共享一個「英語」實例。 – Leito