簡単な例を使用したセットアップは:私は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、この種のロジックをモデルに保持したいので、実装を採用することにしました。このようにして、将来どのようにトランザクションを更新することにしたとしても、トランザクションの合計を正しく更新していることがわかります。実装の提案をしてくれた皆さんに感謝します。