See ActiveRecord::Transactions::ClassMethods for documentation.
Methods
Classes and Modules
Module ActiveRecord::Transactions::ClassMethodsPublic Class methods
[ show source ]
# File 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
Public Instance methods
Reset id and @new_record if the transaction rolls back.
[ show source ]
# File activerecord/lib/active_record/transactions.rb, line 204 204: def rollback_active_record_state! 205: id_present = has_attribute?(self.class.primary_key) 206: previous_id = id 207: previous_new_record = new_record? 208: yield 209: rescue Exception 210: @new_record = previous_new_record 211: if id_present 212: self.id = previous_id 213: else 214: @attributes.delete(self.class.primary_key) 215: @attributes_cache.delete(self.class.primary_key) 216: end 217: raise 218: end
See ActiveRecord::Transactions::ClassMethods for detailed documentation.
[ show source ]
# File activerecord/lib/active_record/transactions.rb, line 187 187: def transaction(&block) 188: self.class.transaction(&block) 189: 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.
[ show source ]
# File activerecord/lib/active_record/transactions.rb, line 226 226: def with_transaction_returning_status(method, *args) 227: status = nil 228: self.class.transaction do 229: status = send(method, *args) 230: raise ActiveRecord::Rollback unless status 231: end 232: status 233: end