在我的 rails 应用程序中,我有一个Donation model
,它有一个名为status
(an integer) 的属性和一个子 model 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
,这不起作用。出于某种原因,在运行销毁回调时,交付对象似乎无法引用其父捐赠。