PostgreSQLをデータベースとして使用し、Rails 3.1.3とruby 1.9.3 私は3つのモデルを持っています。Railsのafter_destroyコールバックオーダー
Activity
ActivityObject
ActivityObjectActivity
彼らがこのように関連しています。
活性
にhas_many:activity_object_activities:依存=>:
にhas_manyを破壊:activity_objects、:=>スルー:after_destroyをactivity_object_activitiesは:
ActivityObjectをdo_something_on_activity_object_related
にhas_many:activity_object_activities:依存=>:
にhas_manyを破壊する:活動、:=>スルー:=依存:活性:
ActivityObjectActivity
belongs_toのactivity_object_activities >:破壊する
belongs_to:activity_object
アクティビティを破壊すると、do_something_on_activity_object_related
のコールの前にactivity_object_activities
テーブルエントリが削除されていることがわかります。これはdependent: destroy
です。 このため、アクティビティが破棄されたときにdo_something_on_activity_object_related
メソッドが呼び出されると、そのアクティビティに関連付けられたactivity_object
を見つけることができません。
アクティビティに関連するアソシエーションが破棄される前に、これをdo_something_on_activity_object_related
と呼ぶ方法がありますか。 after_destroy
コールバックの順序を変更する方法はありますか。
ありがとうございました。
削除/破壊の依存関係のために責任を持って自分自身を取ると、あなたのdo_something_on_activity_object_related
ので、代わりの
has_many :activity_object_activities,:dependent => :destroy
has_many :activity_objects, :through => :activity_object_activities
after_destroy :do_something_on_activity_object_related
これを行う終了した後、彼らがトリガー得ることを確認でき