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 %>
希望这对其他人有帮助