所以这个让我很难过。我有以下基本模型结构;
class Student < ActiveRecord::Base
has_many :attendances
has_many :classes, :through => :attendances
end
class Attendance < ActiveRecord::Base
belongs_to :student
validates :student_id, presence: true
belongs_to :class
validates :class_id, presence: true
end
class Class < ActiveRecord::Base
has_many :attendances
has_many :students, :through => :attendances
end
我正在尝试构建一个针对学生(当前登录用户)的简单应用程序,我们会显示给定班级的平均出勤率,以及该班级中所有学生的平均出勤率。
出勤记录只托管student_id,class_id和出勤率(目前为整数)。
这是一个真实的例子;
学生参加生物学 - 80 平均学生参加生物学 - 96
我尝试了什么
我尝试在学生控制器的Show方面定义@students = Student.all
,并要求参加和参加班组,并在我的视图中运行@students.attendance.average('attended')
- {where&#39;参加&# 39;是包含整数&#39;}的列 - 但是我得到一个错误,即出勤&#39;未定义。
我在哪里错了?
全部谢谢
答案 0 :(得分:0)
更新:从另一个问题得到答案并翻译成新的背景......
<% class_sums = @student.attendances.group(:class_id).average(:class) %>
<% Class.where(id: class_sums.keys).sort_by {|b| -class_sums[b.id]}.each do |class| %>
<tbody>
<tr>
<td><%= class.name %></td>
<td><%= class_sums[class.id] %></td>
<td><%= class.attendances.average(:attended) %></td>
<% end %>
希望这有助于其他人!