用户has_many测试,测试has_many成绩。如何获得成绩?

时间:2012-10-23 03:01:06

标签: ruby-on-rails ruby

我正在努力弄清楚如何实现这一点。 模型是用户,测试,成绩

用户has_many测试,测试has_many等级。

每个年级都有一个计算得分(strong_pass,pass,fail,strong_fail)。

如何计算每个年级类别?

为清楚起见,用户可能会进行4次数学测试,直到通过它为止。他们可能会在频谱中获得成绩(通过,失败等)。

但我想知道,在为用户X进行的所有测试中,有多少次通过,多少​​次失败?

user.tests.grades.passed.count是我希望的工作。但不是 (我确实在“等级模型”中为“通过”,“失败”等命名了范围)

Class Grade

  def self.passed
    where(:grade => "passed")
  end

  def self.failed
    where(:grade => "failed")
  end

end

1 个答案:

答案 0 :(得分:4)

你应该可以这样做:

class User < ActiveRecord::Base
  has_many :tests
  has_many :grades, through: :tests
end

user = User.first

user.grades.passed.count
user.grades.failed.count
相关问题