Keep controllers in the worst state, don't let them do a lot, this is consistent with the principle of shared responsibility in SOLID for object-oriented design. If you have fat controllers, they are difficult to check and maintain.
As for the models, I had dumb models before they did nothing but match the database tables, and this was inspired by most of the sample applications that you see on the Internet, but now I do not.
I (try) to follow the principles from Domain Driven Design, where models (entities in DDD terms) are at the center of the application, they are expected to encapsulate the behavior associated with the object, they are smart models (so yes, the logic associated with the object will be live with him in this case). DDD is a much more serious topic, and it is not directly related to MVC, but the principles underlying it help you to better develop your applications, there are many materials and sample applications available on Google DDD.
In addition, the Ruby On Rails community, which seems to inspire most MVC infrastructures, also seems to be pondering around Fat Models and Skinny Controllers.
In addition, you can add View Models to your mix, which will be useful to me. In this case, you can have a ViewModel to represent a dumb subset of your model (s), just used to create a view, it simplifies your life and further separates your views from your models so that they do not affect your design decisions unnecessarily.
source share