I think this should be implemented as an Observer... https://github.com/rails/rails-observers