在我的rails应用中,我有一个Donation model
,它有一个名为status
(整数)的属性和一个子模型called Delivery
。捐款has_one delivery
。
在交付模式中,我有回调
class Delivery < ActiveRecord::Base
belongs_to :donation
after_create :increment_donation_status
before_destroy :zero_donation_status
def increment_donation_status
self.donation.status += 1
self.donation.save
end
def zero_donation_status
self.donation.status = 0
self.donation.save
end
end
当我创建一个交付时,它正确运行increment_donation_status
,并且捐赠的状态会增加。但是,当我销毁交货时,交货会被销毁,但捐款的状态永远不会被设置为0。
我已尝试同时使用before_destroy
和after_destroy
。我也尝试在zero_donation_status
中放置一个打印语句,它有效。但是,当我尝试打印self.donation.id
时,这不起作用。出于某种原因,在运行销毁回调时,似乎交付对象无法引用其父捐赠。
答案 0 :(得分:0)
发现问题。即使我有从捐赠到交付的一对一关系,我正在删除的交付实际上指的是捐赠两次交付。因此,它无法解析self.donation
。糟糕。