I worked with Rails for a number of years and generally agree with the ideas in this post about finding callbacks to be confusing. Our guideline was to only use ActiveRecord models for direct validation and attribute manipulation and never as a way to hold logic. We also found that it greatly simplified things to move the behavior into service objects.
It's worth noting, however, that not everyone agrees with this approach. DHH thinks that it's clearer to use concerns and callbacks than service objects in most cases. Worth watching his "Writing Software Well" video series (https://www.youtube.com/watch?v=m1jOWu7woKM) for an alternative perspective where you can look at some real, production Basecamp code and see how his viewpoint looks in practice.