diff options
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/transaction.rb | 8 | ||||
-rw-r--r-- | activerecord/lib/active_record/core.rb | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/transactions.rb | 14 |
3 files changed, 16 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb index c74f4e8fa5..a51dda5483 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb @@ -59,6 +59,14 @@ module ActiveRecord @state.set_state(:rolledback) end + def rolledback? + @state.rolledback? + end + + def finalized? + @state.finalized? + end + def rollback_records ite = records.uniq while record = ite.shift diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index 97ce4642aa..a89931b157 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -503,7 +503,7 @@ module ActiveRecord @new_record = true @txn = nil @_start_transaction_state = {} - @transaction_state = nil + @transaction = nil end def initialize_internals_callback diff --git a/activerecord/lib/active_record/transactions.rb b/activerecord/lib/active_record/transactions.rb index ffe7c4ae42..283e1f8736 100644 --- a/activerecord/lib/active_record/transactions.rb +++ b/activerecord/lib/active_record/transactions.rb @@ -356,7 +356,7 @@ module ActiveRecord if has_transactional_callbacks? self.class.connection.add_transaction_record(self) else - set_transaction_state(self.class.connection.transaction_state) + set_transaction(self.class.connection.current_transaction) end remember_transaction_record_state end @@ -445,8 +445,8 @@ module ActiveRecord private - def set_transaction_state(state) # :nodoc: - @transaction_state = state + def set_transaction(txn) # :nodoc: + @transaction = txn end def has_transactional_callbacks? # :nodoc: @@ -471,12 +471,12 @@ module ActiveRecord # method recursively goes through the parent of the TransactionState and # checks if the ActiveRecord object reflects the state of the object. def sync_with_transaction_state - update_attributes_from_transaction_state(@transaction_state) + update_attributes_from_transaction_state(@transaction) end - def update_attributes_from_transaction_state(transaction_state) - if transaction_state && transaction_state.finalized? - restore_transaction_record_state if transaction_state.rolledback? + def update_attributes_from_transaction_state(transaction) + if transaction && transaction.finalized? + restore_transaction_record_state if transaction.rolledback? clear_transaction_record_state end end |