私の 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
。また、printステートメントをに入れてみましたが、うまくいきますzero_donation_status
。ただし、印刷しようとするとself.donation.id
、これは機能しません。何らかの理由で、destroy コールバックが実行されているときに、配信オブジェクトがその親の寄付を参照できないようです。