2

在我的 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,这不起作用。出于某种原因,在运行销毁回调时,交付对象似乎无法引用其父捐赠。

4

1 回答 1

0

发现了问题。尽管我从捐赠到交付有一个 has_one 关系,但我要删除的交付实际上是指向一个包含两个交付的捐赠。正因为如此,它无法解决self.donation。哎呀。

于 2013-05-25T01:49:16.070 回答