我有一个用户模型和点模型。用户可以拥有许多点和点属于用户。
用户获得积分,我不知道应该在哪里放置这些模型的方法。例如,我想要一个“add_points”方法,为用户添加点。我认为应该进入用户模型,但我不确定。
我希望能够执行user1.add_points(:earn_for,amount)
或类似的东西。
答案 0 :(得分: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
如果速记有用,很棒;否则,您可能只使用关系中定义的辅助方法。有关详细信息,请参阅here。
答案 1 :(得分:0)
我会像你描述的那样做
用户对象可以有add_points
方法,在点对象上放置任何内容都没有意义,因为点对象代表一个抽象概念,用户对象代表特定用户。
答案 2 :(得分:0)
实际上,在这种情况下,您不需要任何其他方法来添加积分:就您的用户has_many而言:您可以通过以下方式为用户添加积分:
@user.points.create earned_for: reason, amount: amount