after_create v.s. after_save v.s. after_commit
after_create : will always be *before* the call to save (or create) returns.
Rails wraps every save inside a transaction and the before/after create callbacks run inside that transaction (a consequence of this is that if an exception is raised in an
after_create the save will be rolled back).
after_commit your code doesn’t run until after the outermost transaction was committed. This could be the transaction rails created or one created by you (for example if you wanted to make several changes inside a single transaction). Originally posted here
That also means, that if
after_commit raises an exception, then the transaction won’t be rolled back ****.
Is called after
Base.save on new objects that haven‘t been saved yet (no record exists)
Is called after Base.save (regardless of whether it‘s a create or update save)
Is called after the database transaction is completed.
ref : https://stackoverflow.com/questions/22952664/what-is-the-difference-between-before-create-and-after-create-and-when-to-us ,