модуль ActiveRecord::Transactions
См. ActiveRecord::Transactions::ClassMethods для документации.
Константы
- ACTIONS
Открытые методы экземпляра
Добавить запись в текущую транзакцию, чтобы могли быть вызваны колбэки after_rollback и after_commit.
# File activerecord/lib/active_record/transactions.rb, line 312
def add_to_transaction
if self.class.connection.add_transaction_record(self)
remember_transaction_record_state
end
end Сбросить id и @new_record, если транзакция отменяется.
# File activerecord/lib/active_record/transactions.rb, line 281 def rollback_active_record_state! remember_transaction_record_state yield rescue Exception restore_transaction_record_state raise ensure clear_transaction_record_state end
См. ActiveRecord::Transactions::ClassMethods для подробной документации.
# File activerecord/lib/active_record/transactions.rb, line 258
def transaction(options = {}, &block)
self.class.transaction(options, &block)
end Выполняет method в рамках транзакции и сохраняет её возвращаемое значение как флаг статуса. Если статус true, транзакция подтверждается, в противном случае выполняется ROLLBACK. В любом случае возвращается флаг статуса.
Этот метод доступен в контексте экземпляра ActiveRecord::Base.
# File activerecord/lib/active_record/transactions.rb, line 324
def with_transaction_returning_status
status = nil
self.class.transaction do
add_to_transaction
begin
status = yield
rescue ActiveRecord::Rollback
@_start_transaction_state[:level] = (@_start_transaction_state[:level] || 0) - 1
status = nil
end
raise ActiveRecord::Rollback unless status
end
status
end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.