The concern I had with using after_commit callback is that this could cause the changed_attributes to be reset before other after_commit callbacks have been run.  This is why I used monkey patching to ensure that all after_commit callbacks had been run before reseting the changed attributes.