Dev.to
6/22/2026

What is a database transaction, and when do you reach for one in Rails?
Short summary
Database transactions atomically group multiple database writes—either all commit or all rollback, preventing inconsistent states where some writes succeed while others fail. In Rails, use bang methods like create! inside transaction blocks because plain create returns false without triggering rollback; only exceptions cause rollback. Keep external API calls like payment charges outside transactions to avoid holding locks and to prevent disagreement between your database and external services.
- •Transactions ensure atomicity: either all database writes succeed or all rollback together
- •Use bang methods (create!, save!, update!) in transaction blocks so failures trigger rollback; plain methods don't
- •Keep external calls and side effects outside transactions to prevent lock contention and data disagreement
Generated with AI, which can make mistakes.
Is this a good recommendation for you?



