I have a Rails object with after_update
callback that sends a record to a queue. And the problem is that I noticed sometimes the queue is being processed faster
If you consult the Rails documentation you will find a lot of callbacks you can use. The best for this job might be "after_commit":
This is straight from the Rails Docs (link at the bottom)
3.1 Creating an Object
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback
3.2 Updating an Object
before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
after_commit/after_rollback
3.3 Destroying an Object
before_destroy
around_destroy
after_destroy
Rails DOcs: http://guides.rubyonrails.org/active_record_callbacks.html
after_save
, after_create
, after_update
are called within the transaction block, so they will be executed before executing the SQL statement.
If you want to do something when the statement execution is completed, you should use after_commit callback.