rails 3在/ after_save之前递增相关的模型属性

时间:2012-01-21 16:43:54

标签: ruby-on-rails ruby-on-rails-3 callback increment

我有一个基本应用程序,允许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

我尝试了这个,并没有返回任何错误,它处理了兑换但没有增加积分......

想法?

2 个答案:

答案 0 :(得分:4)

本杰明上面所说的。增量不会保存模型。增量!确实

http://apidock.com/rails/ActiveRecord/Persistence/increment%21

答案 1 :(得分:0)

我认为问题在于您没有保存用户模型。像self.user.save!这样的东西可以解决问题。