Rails:将current_id值与平均值进行比较(3个表)

时间:2014-10-04 11:33:34

标签: ruby-on-rails activerecord

所以这个让我很难过。我有以下基本模型结构;

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;未定义。

我在哪里错了?

全部谢谢

1 个答案:

答案 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 %>

希望这有助于其他人!

相关问题