diff options
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb index 4cbc6a5035..c7614b1e10 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb @@ -180,14 +180,14 @@ module ActiveRecord begin if @transaction.closed? || requires_new - @transaction = @transaction.begin + begin_transaction transaction_open = true end yield rescue Exception => error if !outside_transaction? && transaction_open - @transaction = @transaction.rollback + rollback_transaction transaction_open = false end @@ -201,9 +201,9 @@ module ActiveRecord @transaction = Transactions::Closed.new(self) elsif @transaction.open? && transaction_open begin - @transaction = @transaction.commit + commit_transaction rescue Exception - @transaction = @transaction.rollback + rollback_transaction raise end end @@ -217,6 +217,10 @@ module ActiveRecord @transaction = @transaction.begin end + def commit_transaction #:nodoc: + @transaction = @transaction.commit + end + def rollback_transaction #:nodoc: @transaction = @transaction.rollback end |