我有一个用户模型和点模型。一个用户可以有很多积分,积分属于用户。
用户赚取积分,我只是不确定我应该将这些模型的方法放在哪里。例如,我想要一个“add_points”方法来为用户添加点数。我认为应该进入用户模型,但我不确定。
我希望能够做 user1.add_points(:earned_for, amount)
或类似的规定。
我有一个用户模型和点模型。一个用户可以有很多积分,积分属于用户。
用户赚取积分,我只是不确定我应该将这些模型的方法放在哪里。例如,我想要一个“add_points”方法来为用户添加点数。我认为应该进入用户模型,但我不确定。
我希望能够做 user1.add_points(:earned_for, amount)
或类似的规定。
当您将方法添加到用户时,您可能不会做更多的事情,而不仅仅是挂钩关系的create
方法has_many
:
class User < ActiveRecord::Base
has_many :points
def add_point(reason, amount)
points.create({:earned_for => reason, :amount => amount})
end
end
如果速记有用,那就太好了;否则,您可能只使用在您的关系中定义的辅助方法。有关详细信息,请参见此处。
我会按照你的描述去做
用户对象可以有一个add_points
方法,在点对象上放置任何东西都是没有意义的,因为点对象是用来表示抽象概念的,而用户对象是用来表示特定用户的。
实际上,在这种情况下,您不需要任何其他方法来添加积分:就您的 User has_many :points 而言,您可以通过这种方式为用户添加积分:
@user.points.create earned_for: reason, amount: amount