Module: ActiveRecord::Transactions
Overview
See ActiveRecord::Transactions::ClassMethods for documentation.
Defined Under Namespace
Modules: ClassMethods Classes: TransactionError
Instance Method Summary collapse
-
#add_to_transaction ⇒ Object
Add the record to the current transaction so that the :after_rollback and :after_commit callbacks can be called.
-
#committed! ⇒ Object
Call the after_commit callbacks.
-
#destroy ⇒ Object
:nodoc:.
-
#rollback_active_record_state! ⇒ Object
Reset id and @new_record if the transaction rolls back.
-
#rolledback!(force_restore_state = false) ⇒ Object
Call the after rollback callbacks.
-
#save ⇒ Object
:nodoc:.
-
#save! ⇒ Object
:nodoc:.
-
#transaction(options = {}, &block) ⇒ Object
See ActiveRecord::Transactions::ClassMethods for detailed documentation.
-
#with_transaction_returning_status ⇒ Object
Executes
method
within a transaction and captures its return value as a status flag.
Instance Method Details
#add_to_transaction ⇒ Object
Add the record to the current transaction so that the :after_rollback and :after_commit callbacks can be called.
297 298 299 300 301 |
# File 'lib/active_record/transactions.rb', line 297 def add_to_transaction if self.class.connection.add_transaction_record(self) remember_transaction_record_state end end |
#committed! ⇒ Object
Call the after_commit callbacks
280 281 282 283 284 |
# File 'lib/active_record/transactions.rb', line 280 def committed! #:nodoc: run_callbacks :commit ensure clear_transaction_record_state end |
#destroy ⇒ Object
:nodoc:
253 254 255 |
# File 'lib/active_record/transactions.rb', line 253 def destroy #:nodoc: with_transaction_returning_status { super } end |
#rollback_active_record_state! ⇒ Object
Reset id and @new_record if the transaction rolls back.
268 269 270 271 272 273 274 275 276 277 |
# File 'lib/active_record/transactions.rb', line 268 def rollback_active_record_state! remember_transaction_record_state yield rescue Exception IdentityMap.remove(self) if IdentityMap.enabled? restore_transaction_record_state raise ensure clear_transaction_record_state end |
#rolledback!(force_restore_state = false) ⇒ Object
Call the after rollback callbacks. The restore_state argument indicates if the record state should be rolled back to the beginning or just to the last savepoint.
288 289 290 291 292 293 |
# File 'lib/active_record/transactions.rb', line 288 def rolledback!(force_restore_state = false) #:nodoc: run_callbacks :rollback ensure IdentityMap.remove(self) if IdentityMap.enabled? restore_transaction_record_state(force_restore_state) end |
#save ⇒ Object
:nodoc:
257 258 259 260 261 |
# File 'lib/active_record/transactions.rb', line 257 def save(*) #:nodoc: rollback_active_record_state! do with_transaction_returning_status { super } end end |
#save! ⇒ Object
:nodoc:
263 264 265 |
# File 'lib/active_record/transactions.rb', line 263 def save!(*) #:nodoc: with_transaction_returning_status { super } end |
#transaction(options = {}, &block) ⇒ Object
See ActiveRecord::Transactions::ClassMethods for detailed documentation.
249 250 251 |
# File 'lib/active_record/transactions.rb', line 249 def transaction( = {}, &block) self.class.transaction(, &block) end |
#with_transaction_returning_status ⇒ Object
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.
309 310 311 312 313 314 315 316 317 |
# File 'lib/active_record/transactions.rb', line 309 def with_transaction_returning_status status = nil self.class.transaction do add_to_transaction status = yield raise ActiveRecord::Rollback unless status end status end |