我有两个模特,学生和缺席,关系:
class Student < ActiveRecord::Base
has_many :absences
class Absence < ActiveRecord::Base
belongs_to :student
我想看看每个学生记录了多少缺席,并在学生的#show页面上显示总数。在控制台中,我可以通过调用:
来查询a = Student.find(1)
a.absences.size
但是,我似乎无法让它在应用程序本身中运行。在应用程序中查询这个的首选方法是在模型还是控制器中?
答案 0 :(得分:1)
这将永远不会起作用,因为您在模型上调用关联,而不是实例。首先,你应该取一个学生,然后计算相关的记录:
Student.find(<id here>).absences.size
要为所有学生汇总此信息,您可以在absence_count
模型中添加Student
属性访问者:
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