Yes, callback hell is a thing, but no, I really wouldn't want to solve it by overriding the expected behaviour of ActiveRecord models. Instead use service objects that deal with business logic, or a route I'm now pursuing on a few projects: use ActiveJobs as "service objects", whilst service objects don't have to be run async, they perhaps can.