1

我有一个用户模型和点模型。一个用户可以有很多积分,积分属于用户。

用户赚取积分,我只是不确定我应该将这些模型的方法放在哪里。例如,我想要一个“add_points”方法来为用户添加点数。我认为应该进入用户模型,但我不确定。

我希望能够做 user1.add_points(:earned_for, amount)

或类似的规定。

4

3 回答 3

2

当您将方法添加到用户时,您可能不会做更多的事情,而不仅仅是挂钩关系的create方法has_many

class User < ActiveRecord::Base

  has_many :points

  def add_point(reason, amount)
    points.create({:earned_for => reason, :amount => amount})
  end
end

如果速记有用,那就太好了;否则,您可能只使用在您的关系中定义的辅助方法。有关详细信息,请参见此处

于 2012-04-12T20:47:34.803 回答
0

我会按照你的描述去做

用户对象可以有一个add_points方法,在点对象上放置任何东西都是没有意义的,因为点对象是用来表示抽象概念的,而用户对象是用来表示特定用户的。

于 2012-04-12T20:46:09.637 回答
0

实际上,在这种情况下,您不需要任何其他方法来添加积分:就您的 User has_many :points 而言,您可以通过这种方式为用户添加积分:

@user.points.create earned_for: reason, amount: amount
于 2012-04-12T20:50:58.990 回答