1

我需要通过几个模型的视图来做一些计算。例子:

class Teacher
  include Mongoid::Document

  has_many :students
end

class Student
  include Mongoid::Document
  belogns_to :teacher

  field gold_stars, type: Integer
  field silver_stars, type: Integer
  field bronze_stars, type: Integer
end

假设在老师的观点上,我需要汇总 gold_stars、silver_stars 和 brown_stars 的数量。聚合视图中的值的最干净的方法是什么?我猜我会使用 after_update 回调,但我不确定是否有更好的方法。

更新

我想要的是老师显示他所有的学生总共有多少颗金星,然后是银,然后是铜。

4

1 回答 1

1

这是解决方案

teacher = Teacher.first
gold_stars = Student.where(:teacher_id => teacher.id).sum(:gold_stars)
silver_stars = Student.where(:teacher_id => teacher.id).sum(:silver_stars)
bronze_stars = Student.where(:teacher_id => teacher.id).sum(:bronze_stars)
于 2012-10-05T05:25:28.377 回答