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 /activerecord | |
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.
Diffstat (limited to 'activerecord')
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 |