Spec-Zone.ru › Ruby on Rails 4.1

модуль ActiveRecord::Transactions

См. ActiveRecord::Transactions::ClassMethods для документации.

Константы

ACTIONS

Открытые методы экземпляра

add_to_transaction() Показать исходный код

Добавить запись в текущую транзакцию, чтобы могли быть вызваны колбэки 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
rollback_active_record_state!() { || ... } Показать исходный код

Сбросить 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
transaction(options = {}, &block) Показать исходный код

См. ActiveRecord::Transactions::ClassMethods для подробной документации.

# File activerecord/lib/active_record/transactions.rb, line 258
def transaction(options = {}, &block)
  self.class.transaction(options, &block)
end
with_transaction_returning_status() { || ... } Показать исходный код

Выполняет 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API