我正在努力弄清楚如何实现这一点。 模型是用户,测试,成绩
用户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
答案 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