Rails :after_save callback runs before the actual database record is created. So use :after_commit instead

January 10, 2012

I ran into a gotcha yersterday when using the :after_save Rails callback, i hadn’t realized that the :after_save hook gets called before the SQL transaction is commited to the database. I was trying to tell asterisk to reload a queue from the database in the after_save hook using an AMI command but asterisk was not ‘seeing’ the record in the database at the time the reload command was being issued, then i realized that what i needed is called :after_commit

:after_commit is Rails 3 only but it can be used in Rails 2.x apps using the after commit gem

Happy Hacking

Comments

comments powered by Disqus