0

私は Rails3 の考え方を取り入れようとしていますが、興味深い問題がありました。

私は次の構造を持っています:

  • ユーザー has_many タスク
  • タスク has_many アセット
  • アセットには 0 から 99 までのスコア属性があります

各ユーザーのすべてのスコアの合計を取得したいのですが、スコープが役立つと思います...

4

1 に答える 1

1

必要なのはこれだけです。

class User < ActiveRecord::Base
  has_many :tasks
  has_many :assets, through: :tasks

  def score_sum
    assets.pluck(:score).inject(:+)
  end


  # pre rails 3.2, try this:
  def score_sum
    assets.select(:score).map(&:score).inject(:+)
  end
end
于 2012-10-24T23:16:43.490 に答える