Граница между контроллером и моделью на самом деле довольно четкая.
Модель - это сердце вашего приложения. Он содержит бизнес-логику / логику предметной области, необходимую для решения проблемы, для которой было написано ваше приложение. Модель обычно состоит из нескольких других слоев, например постоянство, службы, домен и т. д. Распространенное заблуждение, что Модель - это просто база данных, равно как и распространенное заблуждение, что база данных должна быть ActiveRecord.
Контроллер (и представление) являются частью уровня представления. Единственная ответственность контроллера состоит в том, чтобы получать и обрабатывать вводимые пользователем данные, направленные на ваше приложение, и делегировать их соответствующим частям модели. Больше ничего. Он не должен обрабатывать сложный поток приложения или код вашей проблемной области. Вы хотите, чтобы контроллеры были худыми и моделировали толстые с помощью логики .Модель не должна знать ни C, ни V, и вы должны иметь возможность поменять местами V и C для другого уровня представления, не касаясь M.
См. Выдержку MVC в шаблонах архитектуры корпоративных приложений