На самом деле контроллер связующее звено.
Он должен быть тонким, но не более чем нужно.
И стоит рассказать в данном контексте о модели. Она может быть простой и смешиваться с энвироментом в виде эктив рекордс. Или сложной. Иметь сверху обёртку в виде реализации сервисов, связывающих её с внешним миром, например, репозиториями, внешними приходящими данными и т.д.
В контроллер стоит вынести приём данных из внешних источников, работу с правами, реакцию на события (логирование, отправка почты и т.д.). Причём реакция - это не обязательно исполнение действий напрямую, но так же постановка их в очередь для обработчика.
И вот от сложности самой модели и её обёртки зависит тонкость контроллера.
Чем проще реализация модели, тем толще контроллер.