3

我有三个模型UserSubjectGrade

class User< ActiveRecord::Base
  has_many :grades
end

class Subject < ActiveRecord::Base
  has_many :grades
end

class Grade < ActiveRecord::Base
  belongs_to :user
  belongs_to :subject
end

用户可以对同一学科有多个等级。

在用户的页面上,我想显示他averagemaximum每个科目的成绩。实现它的最佳方法是什么?

User: Qwerty
Grades:
-------------------------------
subject       average   maximum
-------------------------------
"subject_1"   56        97
"subject_2"   45        85

据我所知,ActiveRecord::Relationmaximum对and有特殊的方法average,但我不知道如何ActiveRecord::Relation为每组成绩获取 -object 。

4

1 回答 1

3

我想你需要类似的东西:

user.grades.joins(:subject).
  group(:subject_id).
  select(['MAX(grades.grade) as max', 'AVG(grades.grade) as avg', subjects: :name])
于 2012-05-05T08:53:33.887 回答