1

モデルで次のafter_saveコールバックを定義しています。

after_save :validate_image, :publish, :update_some_data, :send_notifications

after_saveの条件に基づいて残りのコールバックをスキップすることは可能ですかvalidate_image

def validate_image
  if image_not_valid
    # skip rest of the callbacks in the after_save chain
    destroy # destroy this record
  end
end

注:-その条件に基づいてレコードも破棄しており、実行する必要のある「after_destroy」コールバックがいくつかあります。

Railsv3.2.6とMongoidv2.4.10を使用していますが、ActiveRecordの場合は違いはないと思います。

4

2 に答える 2

0

before_save の定義を次のように変更します

after_save do
   validate_image
   unless image_not_valid
       publish 
       update_some_data 
       send_notifications
   end
end
于 2012-07-04T04:43:39.333 に答える
0

ActiveRecord の場合:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

before_* コールバックが false を返す場合、それ以降のすべてのコールバックと関連するアクションはキャンセルされます。after_* コールバックが false を返す場合、それ以降のコールバックはすべてキャンセルされます

通常のコールバックでは、false が返されると before_* コールバックのみが停止されます

于 2012-07-12T00:58:48.173 に答える