0

User と Point の 2 つのモデルがあるとします。

ポイントはユーザーに属しています。ポイントには「金額」があります。ユーザーの合計ポイントを返す Point モデルのメソッドを定義したいと考えています。私はそれを次のように呼びたいと思います:user.points.total

ユーザーのIDを渡す必要がないように、Pointモデルでメソッドを定義する方法がわかりません。これを行う簡単な方法があると思いますが、私のGooglefuは失敗しています。

4

3 に答える 3

3

ユーザーモデルが持っていると仮定します

has_many :points

ユーザーモデルでこれを行うことができます

def total_points
    points.sum(:amount)
end
于 2013-08-20T02:24:41.697 に答える
0

モデルで定義されたメソッドが必要な場合はPoint、次を使用します。

class Point
  def total
    user.points.sum(:amount)
  end
end

point次に、 を呼び出すことにより、特定の に関連付けられたユーザーの合計ポイントを取得できますpoint.total。はクラスであり、特定のユーザーを参照していないUser.points.totalため、合計ポイントを取得できません。User

于 2013-08-20T02:32:21.793 に答える
0

SQL sum を使用して集計を行う#sumの使用を検討してください。

例えば、

person.points.sum('amount')

また

# inside User.rb
def total
  points.sum('amount')
end
于 2013-08-20T02:43:32.993 に答える