Handle Transactions
Basic Transaction
AcmeDB.transaction do
user = User.create!(name: "Alice", email: "alice@example.com")
Profile.create!(user_id: user.id, bio: "Hello!")
Account.create!(user_id: user.id, balance: 0.0)
endTransaction with Return Value
user = AcmeDB.transaction do
user = User.create!(name: "Alice", email: "alice@example.com")
Profile.create!(user_id: user.id)
user # Return the user
end
puts user.id # Use the created userManual Rollback
Error Handling
Nested Transactions (Savepoints)
Transaction Isolation Levels
Locking Records
Pessimistic Locking
Select for Update
Transfer Example
Batch Operations
Transaction Callbacks
Read-Only Transactions
Best Practices
See Also
Last updated
Was this helpful?
