Ruby on rails Rails:将当前_id值与平均值进行比较(3个表)

Ruby on rails Rails:将当前_id值与平均值进行比较(3个表),ruby-on-rails,activerecord,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: tr

所以这件事把我难住了。我有以下基本模型结构

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
class-Student:出席人数
结束
课堂出勤:出席
结束
我正在尝试构建一个简单的应用程序,针对一个学生(当前登录的用户),我们显示他们在给定班级的平均出勤率,加上该班级所有学生的平均出勤率

考勤记录只包含学生id、班级id和考勤(当前为整数)

因此,一个真正的例子是

生物系学生出勤率-80 生物学平均学生出勤率-96

我尝试过的

我试图在学生控制器的显示方面定义
@students=Student.all
,并要求考勤和班级参数,在我看来,运行
@students.attention.average('attended')
-{其中'attended'是保存整数的列'}-但我得到一个错误,即'attention'未定义

我在这件事上哪里做错了


谢谢大家更新:从另一个问题得到答案并翻译成新的上下文

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

希望这对其他人有帮助