簡単な例を使用したセットアップは:私は1つのテーブル(持っているTotals
の合計保持)amount
第二の表の各レコードの列を(Things
)。
thing.amount
が更新されたら、古い値と新しい値の差をに追加したいと思いますtotal.sum
。
今、私はself.amount
中に減算しbefore_update
、中に加算self.amount
していafter_update
ます。これにより、更新の成功に対する信頼が非常に高くなります。
制約: すべてのトランザクションの合計を単純に再計算したくありません。
質問:簡単に言うと、after_update
コールバック中に元の値にアクセスしたいと思います。これを行うにはどのような方法がありますか?
更新: LukeFranclのアイデアを採用します。after_update
コールバック中も、self.attr_was
まさに私が望んでいた値にアクセスできます。またafter_update
、この種のロジックをモデルに保持したいので、実装を採用することにしました。このようにして、将来どのようにトランザクションを更新することにしたとしても、トランザクションの合計を正しく更新していることがわかります。実装の提案をしてくれた皆さんに感謝します。