Method: ROM::Repository#transaction

Defined in:
lib/rom/repository.rb

#transactionObject

Open a database transaction

Examples:

commited transaction

user = transaction do |t|
  create(changeset(name: 'Jane'))
end

user
# => #<ROM::Struct::User id=1 name="Jane">

with a rollback

user = transaction do |t|
  changeset(name: 'Jane').commit
  t.rollback!
end

user
# nil

with automatic savepoints

user = transaction(auto_savepoint: true) do
  create(changeset(name: 'Jane'))

  transaction do |t|
    update(changeset(name: 'John'))
    t.rollback!
  end
end

user
# => #<ROM::Struct::User id=1 name="Jane">


146
147
148
# File 'lib/rom/repository.rb', line 146

def transaction(...)
  container.gateways[:default].transaction(...)
end