| Module | ActiveRecord::Transactions |
| In: |
vendor/rails/activerecord/lib/active_record/transactions.rb
|
See ActiveRecord::Transactions::ClassMethods for documentation.
# File vendor/rails/activerecord/lib/active_record/transactions.rb, line 9
9: def self.included(base)
10: base.extend(ClassMethods)
11:
12: base.class_eval do
13: [:destroy, :save, :save!].each do |method|
14: alias_method_chain method, :transactions
15: end
16: end
17: end
Reset id and @new_record if the transaction rolls back.
# File vendor/rails/activerecord/lib/active_record/transactions.rb, line 154
154: def rollback_active_record_state!
155: id_present = has_attribute?(self.class.primary_key)
156: previous_id = id
157: previous_new_record = new_record?
158: yield
159: rescue Exception
160: @new_record = previous_new_record
161: if id_present
162: self.id = previous_id
163: else
164: @attributes.delete(self.class.primary_key)
165: @attributes_cache.delete(self.class.primary_key)
166: end
167: raise
168: end
See ActiveRecord::Transactions::ClassMethods for detailed documentation.
# File vendor/rails/activerecord/lib/active_record/transactions.rb, line 137
137: def transaction(&block)
138: self.class.transaction(&block)
139: end
Executes method within a transaction and captures its return value as a status flag. If the status is true the transaction is committed, otherwise a ROLLBACK is issued. In any case the status flag is returned.
This method is available within the context of an ActiveRecord::Base instance.
# File vendor/rails/activerecord/lib/active_record/transactions.rb, line 176
176: def with_transaction_returning_status(method, *args)
177: status = nil
178: self.class.transaction do
179: status = send(method, *args)
180: raise ActiveRecord::Rollback unless status
181: end
182: status
183: end