Я тоже думал об этой проблеме и пришел к выводу, что для ситуации, когда у вас есть отчеты, связанные с несколькими моделями, но по аналогичным шаблонам, контроллер отчетов и, возможно, общий код в lib
имеет смысл.Отчеты имеют потребности, которые являются более общими для самих себя, чем для моделей, от которых они зависят, например: сортировка, поиск, фильтрация и последующее построение диаграмм, экспорт в файлы, разрешения и т. Д.
Мое обоснованиечто при разработке приложения вы должны рассматривать его как API, даже если вы не используете его.Хорошие API-интерфейсы последовательны и предсказуемы, и в действительности это то, что предоставляют контроллеры.Простые действия RESTful CRUD (вообще говоря) принадлежат контроллерам, связанным с моделями.
Отчетность отличается, отчасти потому, что она имеет тенденцию к пересечению моделей, а отчасти потому, что существуют разные шаблоны и, вероятно, со временем будут расти.Например, у нас есть отчет для наших деловых партнеров, который объединяет платежи, учетные записи пользователей и продукты в один отчет;другие отчеты предоставляют свод метрик по нескольким моделям.Отчетность - это свое дело.