diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-02-01 13:52:50 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-02-01 13:55:16 -0800 |
commit | da8de9114b41618322dde17c35b891ade46751fe (patch) | |
tree | 801589fbaa9f58626b13c20652af4691379f49ba | |
parent | e87ff501932eb1baecafcca64518e3763597163e (diff) | |
download | rails-da8de9114b41618322dde17c35b891ade46751fe.tar.gz rails-da8de9114b41618322dde17c35b891ade46751fe.tar.bz2 rails-da8de9114b41618322dde17c35b891ade46751fe.zip |
push add to transaction logic down to the instance
the transaction object shouldn't know so much about active record
objects, so let's push the conditionals in to the instance.
3 files changed, 10 insertions, 6 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 c3e5e9ad61..3b1e321f4b 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb @@ -234,6 +234,10 @@ module ActiveRecord current_transaction.add_record(record) end + def transaction_state + current_transaction.state + end + # Begins the transaction (and turns off auto-committing). def begin_db_transaction() end diff --git a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb index 1252a33d7d..1eb30956d4 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb @@ -55,11 +55,7 @@ module ActiveRecord end def add_record(record) - if record.has_transactional_callbacks? - records << record - else - record.set_transaction_state(@state) - end + records << record end def rollback diff --git a/activerecord/lib/active_record/transactions.rb b/activerecord/lib/active_record/transactions.rb index 99b3b5c245..609c395cb6 100644 --- a/activerecord/lib/active_record/transactions.rb +++ b/activerecord/lib/active_record/transactions.rb @@ -318,7 +318,11 @@ module ActiveRecord # Add the record to the current transaction so that the +after_rollback+ and +after_commit+ callbacks # can be called. def add_to_transaction - self.class.connection.add_transaction_record(self) + if has_transactional_callbacks? + self.class.connection.add_transaction_record(self) + else + set_transaction_state(self.class.connection.transaction_state) + end remember_transaction_record_state end |