たとえば、あなたが持っているとしましょう
class Account << ActiveRecord
has_many :receipts
after_touch :calculate_sum
def calculate_sum
self[:total_sum] = receipts.sum(:value)
end
end
class Receipt << ActiveRecord
belongs_to :account, :touch => true
end
各アカウントは、関連付けられているすべての領収書の合計を保持する必要があります。アカウントの領収書の値を更新すると、after_touch コールバックが発生し、値が更新されます。そこにはすべてハンキードーリーがあります。
しかし、領収書の親を変更すると..
receipt = account_a.receipts.first
receipt.account = account_b
また
account_b.receipts << receipt
これらの場合、コールバックは古いアカウントでも新しいアカウントでもトリガーされません。
どうすればそうなりますか?