diff options
author | Xavier Noria <fxn@hashref.com> | 2010-05-09 11:46:45 +0200 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2010-05-09 11:46:45 +0200 |
commit | e1a0d86fe0355ddff8c86db0f42f3824ffe14c02 (patch) | |
tree | 5833022ca41905f243c15c8a5ffdf864de69bfa6 /activerecord/lib/active_record/transactions.rb | |
parent | 1ff3d951e620ddeeb97e87e2024391470e886467 (diff) | |
parent | df508bd97062b871fe25eda8d1bb61cd43d79bc4 (diff) | |
download | rails-e1a0d86fe0355ddff8c86db0f42f3824ffe14c02.tar.gz rails-e1a0d86fe0355ddff8c86db0f42f3824ffe14c02.tar.bz2 rails-e1a0d86fe0355ddff8c86db0f42f3824ffe14c02.zip |
Merge remote branch 'rails/master'
Diffstat (limited to 'activerecord/lib/active_record/transactions.rb')
-rw-r--r-- | activerecord/lib/active_record/transactions.rb | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/activerecord/lib/active_record/transactions.rb b/activerecord/lib/active_record/transactions.rb index 1a195fbb81..5a8e2ce880 100644 --- a/activerecord/lib/active_record/transactions.rb +++ b/activerecord/lib/active_record/transactions.rb @@ -9,10 +9,6 @@ module ActiveRecord end included do - [:destroy, :save, :save!].each do |method| - alias_method_chain method, :transactions - end - define_model_callbacks :commit, :commit_on_update, :commit_on_create, :commit_on_destroy, :only => :after define_model_callbacks :rollback, :rollback_on_update, :rollback_on_create, :rollback_on_destroy end @@ -213,16 +209,18 @@ module ActiveRecord self.class.transaction(&block) end - def destroy_with_transactions #:nodoc: - with_transaction_returning_status(:destroy_without_transactions) + def destroy #:nodoc: + with_transaction_returning_status { super } end - def save_with_transactions(*args) #:nodoc: - rollback_active_record_state! { with_transaction_returning_status(:save_without_transactions, *args) } + def save(*) #:nodoc: + rollback_active_record_state! do + with_transaction_returning_status { super } + end end - def save_with_transactions! #:nodoc: - with_transaction_returning_status(:save_without_transactions!) + def save!(*) #:nodoc: + with_transaction_returning_status { super } end # Reset id and @new_record if the transaction rolls back. @@ -279,11 +277,11 @@ module ActiveRecord # # This method is available within the context of an ActiveRecord::Base # instance. - def with_transaction_returning_status(method, *args) + def with_transaction_returning_status status = nil self.class.transaction do add_to_transaction - status = send(method, *args) + status = yield raise ActiveRecord::Rollback unless status end status |