0

我正在尝试进入 Rails3 的思维模式,但遇到了一个有趣的问题。

我有以下结构:

  • 用户 has_many 任务
  • 任务 has_many 资产
  • 资产的 score 属性介于 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 回答