2014-10-04 2 views
0

, так что это меня насторожило. У меня есть следующая базовая модель;Rails: сравнить текущее значение по отношению к среднему (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 в шоу аспекте контроллера Студенческой и требуют params of Attendance и Class, и, на мой взгляд, запустить @students.attendance.average('attended') - {где 'attend' - это столбец, который содержит целое число}, но я получаю сообщение об ошибке, что «посещаемость» не определена.

Где я буду ошибаться?

Спасибо всем

ответ

0

Update: получил ответ от другого вопроса и переведен в новый контекст ...

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

Надежда это помогает кому-то еще!

Смежные вопросы