0

假设我有两个模型:用户和点。

点belongs_to 用户。点有一个“数量”。我想在 Point 模型中定义一个返回用户总分的方法。我想这样称呼它:user.points.total

我只是不知道如何在 Point 模型中定义方法,这样我就不必将用户 ID 传递给它。我想有一种简单的方法可以做到这一点,但我的 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

考虑使用#sum,它使用 SQL sum 进行聚合。

例如,

person.points.sum('amount')

或者

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