Проектирование контроллера отчетов Rails - PullRequest
0 голосов
/ 15 марта 2011

Я разрабатываю контроллер для отчетов.Будет около 10 различных отчетов, таких как:

  • Распределенные курсы
  • Назначенные курсы
  • Логины .. и т.д. ..

Должен ли я создать "отчеты" контроллера, которые будут иметь такие URL, как:

/ reports / courses_allocated? Course = abc & start_date = 2001-01-01 & end_date = 2011-01-01 / reports / courses_assigned?2001-01-01 & end_date = 2011-01-01

Также будут действия ajax, которые будут возвращать такие данные, как get_courses_by_category.(Если у этого действия ajax свой метод, так как он связан с отчетами, или это должно быть частью контроллера курсов)

Я просто ищу рекомендации о том, как разработать систему отчетов, которая в основномпросто сложные SQL-запросы, которые генерируют графики в старших диаграммах (данные, загруженные Ajax) и в табличных данных.

Ответы [ 2 ]

3 голосов
/ 24 сентября 2012

Я тоже думал об этой проблеме и пришел к выводу, что для ситуации, когда у вас есть отчеты, связанные с несколькими моделями, но по аналогичным шаблонам, контроллер отчетов и, возможно, общий код в lib имеет смысл.Отчеты имеют потребности, которые являются более общими для самих себя, чем для моделей, от которых они зависят, например: сортировка, поиск, фильтрация и последующее построение диаграмм, экспорт в файлы, разрешения и т. Д.

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

Отчетность отличается, отчасти потому, что она имеет тенденцию к пересечению моделей, а отчасти потому, что существуют разные шаблоны и, вероятно, со временем будут расти.Например, у нас есть отчет для наших деловых партнеров, который объединяет платежи, учетные записи пользователей и продукты в один отчет;другие отчеты предоставляют свод метрик по нескольким моделям.Отчетность - это свое дело.

3 голосов
/ 15 марта 2011

Отчеты раздражают, учитывая, что вы должны тратить на это как можно меньше времени. Я рекомендую использовать searchlogic , чтобы упростить запрос к вашим моделям, это избавит вас от написания всей сантехники с вашего query string -> sql query.

Еще одна вещь, о которой стоит подумать, это то, что корни ваших запросов, скорее всего, будут областями видимости, поэтому, если бы вы имели (например):

/courses/allocated

Это (возможно) отобразится на Course.allocated.

Вы могли бы иметь контроллер отчетов, в этом нет ничего плохого, но мне лично нравится моделировать свои отчеты вокруг моих существующих контроллеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...