Model Observers are a class-based approach to reacting to model events. The biggest drawback of this approach is there is no right way to do this. You can choose any of the above methods, and they will work, but you should choose the one that is right for you and your specific use case.
Sort: