用户 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;用户
对此问题的一个警告是,兑换用户不是我尝试增加点数的用户。代码是由用户创建的,即我正在尝试更新的用户......
想法?
答案 0 :(得分:0)
has_many / one和belongs_to需要一起去。当你声明Redemption has_one:code时,Rails希望你在代码表上放置一个redemption_id并在Code上声明相应的belongs_to。