diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-03-02 09:00:42 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-03-02 09:17:03 -0800 |
commit | ec51c3fedd16b561d096dcc1a6705fdc02ab7666 (patch) | |
tree | 3b1cb55a5d49aec5bbc89f412a3eb541f1aabe8b | |
parent | 7be50103d518927db347d5b86dafc6f182765323 (diff) | |
download | rails-ec51c3fedd16b561d096dcc1a6705fdc02ab7666.tar.gz rails-ec51c3fedd16b561d096dcc1a6705fdc02ab7666.tar.bz2 rails-ec51c3fedd16b561d096dcc1a6705fdc02ab7666.zip |
ask the txn for it's state, not a state object
this way we don't have to mutate a state object, we can just change the
state of the txn
-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 |