0

我有兩個型號,學生與缺席,與關係:Rails的:尺寸不工作在的has_many關係

class Student < ActiveRecord::Base 
    has_many :absences 

class Absence < ActiveRecord::Base 
    belongs_to :student 

我想看看有多少缺席已記錄每個學生,並表明在學生的#show頁面上總計。在控制檯中,我可以通過調用查詢這個:

a = Student.find(1) 
a.absences.size 

不過,我似乎無法得到它的應用程序本身的工作。在應用程序中查詢此應用程序的首選方式是在模型還是控制器中?

回答

1

這將無法正常工作,因爲您在模型上調用關聯,而不是實例。首先,你應該獲取一個學生再算上相關的記錄:

Student.find(<id here>).absences.size 

要彙總這些信息面向全體學生,你可以在Student模型添加absence_count屬性訪問器:

attr_accessor :absence_count 

,然後像做這樣的:

Student.includes(:absences).each{|s| s.absence_count = s.absences.size} 

如果你只需要輸出它的觀點,那麼你可以嘗試以下方法:

Student.includes(:absences).each do |student| 
    puts student.absences.size 
end 
+0

你說得對。我應該說,當我在控制檯中使用它時,我正在查詢Student模型的一個實例。我會更新我的問題來澄清這一點。 – kongzi

+0

@kongzi:發佈期望的結果輸出 – potashin

+0

期望的結果輸出是爲每個學生顯示其缺勤數量。 – kongzi