3

私はこのカウントを達成する方法を理解するのに苦労しています。モデルはユーザー、テスト、グレードです

ユーザーhas_manyテスト、テストhas_manyグレード。

各グレードには計算されたスコアがあります(strong_pass、pass、fail、strong_fail)。

各グレードカテゴリのカウントを取得するにはどうすればよいですか?

わかりやすくするために、ユーザーは合格するまで数学のテストを4回受ける場合があります。彼らはスペクトルの成績を受け取るかもしれません(合格、不合格など)。

しかし、ユーザーXに対して行われたすべてのテストのうち、合格数、不合格数を知りたいのですが。

user.tests.grades.passed.count 私がうまくいくことを望んでいたものです。ただし、そうではありません
(Gradeモデルで「合格」、「不合格」などのスコープに名前を付けています)

Class Grade

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

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

end
4

1 に答える 1

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
于 2012-10-23T03:35:08.053 に答える