2

私の Rails アプリには、(整数)Donation modelという属性と子モデルを持つ があります。寄付。statuscalled Deliveryhas_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_destroyafter_destroy。また、printステートメントをに入れてみましたが、うまくいきますzero_donation_status。ただし、印刷しようとするとself.donation.id、これは機能しません。何らかの理由で、destroy コールバックが実行されているときに、配信オブジェクトがその親の寄付を参照できないようです。

4

1 に答える 1