Callbacks are great for quickly tapping into the object life cycle. However, after a model or an application grows, it will become harder to maintain over time. It is better to extract the responsibility and separate the logic.
State Machines are useful for tracking the state of an object. With AASM, we take a dive into how states can transition as well as modifying states and interacting with them.