2012-01-21 90 views
0

我有一个基本的应用程序,允许user1创建一个可兑换的代码。用户1与他的朋友和用户共享此代码2,3,4兑换代码。在每次赎回时,我需要增加user1的points属性。rails 3增加/ after_save之前的相关模型属性

第一次用户兑换代码时,它创建了一个兑换。由于用户只能兑换一次代码,因此这再也不能工作了。另一个用户可以兑换它,但每个用户不能超过一次。

所以我想我会使用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

我认为问题在于你没有保存用户模型。像self.user.save!可能会诀窍。

+0

说这样做是为了而是简单地增加一个爆炸是更优雅。 –