diff options
Diffstat (limited to 'activerecord/lib/active_record/transactions.rb')
-rw-r--r-- | activerecord/lib/active_record/transactions.rb | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/activerecord/lib/active_record/transactions.rb b/activerecord/lib/active_record/transactions.rb index 61f5d819fc..45a6418492 100644 --- a/activerecord/lib/active_record/transactions.rb +++ b/activerecord/lib/active_record/transactions.rb @@ -30,17 +30,6 @@ module ActiveRecord # Exceptions will force a ROLLBACK that returns the database to the state before the transaction was begun. Be aware, though, # that the objects by default will _not_ have their instance data returned to their pre-transactional state. # - # == Rolling back a transaction manually - # - # Instead of relying on exceptions to rollback your transactions, you can also do so manually from within the scope - # of the transaction by accepting a yield parameter and calling rollback! on it. Example: - # - # transaction do |transaction| - # david.withdrawal(100) - # mary.deposit(100) - # transaction.rollback! # rolls back the transaction that was otherwise going to be successful - # end - # # == Different ActiveRecord classes in a single transaction # # Though the transaction class method is called on some ActiveRecord class, @@ -80,7 +69,8 @@ module ActiveRecord # == Exception handling # # Also have in mind that exceptions thrown within a transaction block will be propagated (after triggering the ROLLBACK), so you - # should be ready to catch those in your application code. + # should be ready to catch those in your application code. One exception is the ActiveRecord::Rollback exception, which will + # trigger a ROLLBACK when raised, but not be re-raised by the transaction block. module ClassMethods def transaction(&block) previous_handler = trap('TERM') { raise TransactionError, "Transaction aborted" } |