Ruby on Rails - save and destroy are automatically wrapped in a transaction in ruby on rails- ruby on rails tutorial - rails guides - rails tutorial - ruby rails
Save and destroy are automatically wrapped in a transaction
Both #save and #destroy come wrapped in a transaction that ensures that whatever we do in validations or callbacks will happen under its protected cover. So we can use validations to check for values that the transaction depends on or we can raise exceptions in the callbacks to rollback, including after_* callbacks. As a consequence changes to the database are not seen outside your connection until the operation is complete. For example, if you try to update the index of a search engine in after_save the indexer won't see the updated record. The after_commit callback is the only one that is triggered once the update is committed.