То, как я с этим справляюсь, похоже, работает нормально, - обрабатывать отчет через Model-View-Controller так же, как и в любой другой части приложения. Так, например, счет получает модель Invoice, доступную через, возможно, InvoicesController и отображаемую через invoices /: id. Модель Invoice, вероятно, не будет наследоваться от ActiveRecord :: Base, потому что у нее нет (для примера давайте сделаем это предположение) таблицы: она состоит из Customer, Order, Product, Price и OrderItem. 1001 *
Модель Invoice получает все необходимые данные и предоставляет методы для производных значений, например total_amount. Он создан контроллером и представлен аккуратно набором представлений, написанных для любых форматов, которые вам требуются.
Имеет ли что-нибудь из этого смысл? Я обнаружил, что мои «отчетные» модели в целом оказались довольно приятными.