rails 3回调设置关联对象的增量

时间:2012-01-21 21:20:03

标签: ruby-on-rails callback

用户   has_many:代码   has_many:兑换

代码   belongs_to:用户   has_many:兑换

赎回   has_one:代码   belongs_to:user

赎回模式:

  class Redemption < ActiveRecord::Base
  has_one :code
  belongs_to :user

  validates :code_id, :presence => true
  validates :user_id, :presence => true

  after_create :increment_points
  def increment_points
    self.code.user.increment!(:points)
  end 

当我创建新的兑换时,它会返回以下错误:

PGError: ERROR:  column codes.redemption_id does not exist
LINE 1: SELECT  "codes".* FROM "codes"  WHERE "codes"."redemption_id...
                                              ^
: SELECT  "codes".* FROM "codes"  WHERE "codes"."redemption_id" = 17 LIMIT 1

我的协会有问题吗?我已将其映射出来,并相信我可以回溯跟踪关联兑换 - &gt;代码 - &gt;用户

对此问题的一个警告是,兑换用户不是我尝试增加点数的用户。代码是由用户创建的,即我正在尝试更新的用户......

想法?

1 个答案:

答案 0 :(得分:0)

has_many / one和belongs_to需要一起去。当你声明Redemption has_one:code时,Rails希望你在代码表上放置一个redemption_id并在Code上声明相应的belongs_to。