例如,假设您有
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
在这些情况下,我的回调不会在旧帐户或新帐户上触发。
我如何做到这一点?