2011-01-17 9 views
1

「製品」などのオブジェクトが変更されたときにイベントをテーブルに保存するタイムラインを作成しています。変更時の親クラスのトリガオブザーバ

「after_create」と「before_update」などを使用して、合理的なログメッセージと関連データを構成するProductのオブザーバを作成しました。これは完全に機能します。

現在、各製品には多数のバリアントがあり、各バリアントには多くの価格があります。ただし、通常は同じ形式で編集されます。しかし、Productクラスに変更を加えるだけで、オブザーバは "before_update"をトリガします。

Variantを変更して、関連する製品のProduct-observerをトリガーし、同じ方法で価格を変更すると、Priceに関連付けられたVariantに関連付けられた製品がトリガーされます。

これは、Rails 2.3.3以降の:touch機能と違いはありません。私もその関数に依存しようとしましたが、触れてもbefore_updateオブザーバメソッドがトリガされていないようです。

どうすればよいですか?

答えて

0

私の現在の経験に基づいて、touchは通常のコールバックを起動するが、オブザーバのコールバックは起動しません。これらはわずかに異なるためです。

関連する問題