diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-08-28 11:36:56 +0100 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-08-28 11:36:56 +0100 |
commit | 3e3945b2fafb9ccedfd9ff181c31b18f5d4cd0ce (patch) | |
tree | cd86abce0ab9accbbbf24018961464590fa6bb39 /activerecord/lib/active_record/callbacks.rb | |
parent | 5db2f199aba9aa8d00adefa8237922ad684aca03 (diff) | |
parent | 96c6fe084228d570dad80e3100830edb2bc0448d (diff) | |
download | rails-3e3945b2fafb9ccedfd9ff181c31b18f5d4cd0ce.tar.gz rails-3e3945b2fafb9ccedfd9ff181c31b18f5d4cd0ce.tar.bz2 rails-3e3945b2fafb9ccedfd9ff181c31b18f5d4cd0ce.zip |
Merge commit 'mainstream/master'
Conflicts:
activerecord/lib/active_record/associations/association_proxy.rb
activerecord/lib/active_record/callbacks.rb
activeresource/lib/active_resource/base.rb
Diffstat (limited to 'activerecord/lib/active_record/callbacks.rb')
-rw-r--r-- | activerecord/lib/active_record/callbacks.rb | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/callbacks.rb b/activerecord/lib/active_record/callbacks.rb index d99e183f9e..dd7ae51096 100644 --- a/activerecord/lib/active_record/callbacks.rb +++ b/activerecord/lib/active_record/callbacks.rb @@ -172,16 +172,15 @@ module ActiveRecord # # == Transactions # - # The entire callback chain for +save+ and +destroy+ runs within their transaction, including - # the <tt>after_*</tt> hooks. Cancellation does not trigger a rollback. To rollback - # the transaction just raise an exception the same way you do for regular transactions. - # - # Note though that such an exception bypasses the regular call chain in Active Record: - # If ActiveRecord::Rollback is raised both +save+ and +destroy+ return +nil+. On the other - # hand <tt>save!</tt> does *not* raise ActiveRecord::RecordNotSaved, and does not raise - # anything else for that matter, <tt>save!</tt> just returns +nil+ in that case. - # If any other exception is raised it goes up until it reaches the caller, no matter - # which one of the three actions was being performed. + # The entire callback chain of a +save+, <tt>save!</tt>, or +destroy+ call runs + # within a transaction. That includes <tt>after_*</tt> hooks. If everything + # goes fine a COMMIT is executed once the chain has been completed. + # + # If a <tt>before_*</tt> callback cancels the action a ROLLBACK is issued. You + # can also trigger a ROLLBACK raising an exception in any of the callbacks, + # including <tt>after_*</tt> hooks. Note, however, that in that case the client + # needs to be aware of it because an ordinary +save+ will raise such exception + # instead of quietly returning +false+. module Callbacks CALLBACKS = %w( after_find after_initialize before_save after_save before_create after_create before_update after_update before_validation |