我有一个基本应用程序,允许user1创建可兑换代码。 user1与他的朋友共享此代码,user2,3,4兑换代码。在每次兑换时,我需要增加user1的points属性。
用户首次兑换代码时,会创建兑换。这永远不会再次起作用,因为用户只能兑换一次代码。另一个用户可以兑换它,但不能超过一次。
所以我想我会使用before或after_create回调。这是我的兑换课程:
class Redemption < ActiveRecord::Base
has_one :code
belongs_to :user
validates :code_id, :presence => true
validates :user_id, :presence => true
before_create :increment_points
def increment_points
self.user.increment(:points)
end
end
我尝试了这个,并没有返回任何错误,它处理了兑换但没有增加积分......
想法?
答案 0 :(得分:4)
本杰明上面所说的。增量不会保存模型。增量!确实
http://apidock.com/rails/ActiveRecord/Persistence/increment%21
答案 1 :(得分:0)
我认为问题在于您没有保存用户模型。像self.user.save!
这样的东西可以解决问题。