The curse of fat/thin controllers and thin/fat models
Controllers and models are two core abstractions in Ruby on Rails. If an application follows the Rails Way, most of the business logic code goes to either one of these two. Why so? Because that is all Rails gives us out of the box.
Having as few abstractions as possible has a significant benefit—a smooth learning curve. Every application looks the same; you can start working on a new code base quickly. Though, this is only a theory. In reality, having an insufficient number of abstractions (two, in our case—controllers and models) leads to a situation where business logic is distributed between the abstractions in an unpredictable manner.
Some applications prefer to keep logic in controllers, while others put everything into models. The latter approach, also known as thin controllers and fat models, became a best practice in the Rails community. But still, many applications follow it sparingly, and fat controllers...