2014-10-04 84 views
0

所以這一個難倒了我。我有以下基本模型結構;Rails:將current_id值與平均值(3個表)進行比較

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

我已經試過

我試圖在學生控制器的顯示方面來定義@students = Student.all,並要求考勤和班級參數,並在我看來運行@students.attendance.average('attended') - {其中'出席'是持有整數的列'} - 但我得到一個錯誤,'出席'是未定義的。

我在哪裏錯了?

感謝所有

回答

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

希望這可以幫助其他人!