Куда лучше всего поместить всю логику создания отчета в ruby ​​on rails?

У меня есть много моделей, которые я использую для получения данных и создания отчета.

Отчет не нужно сохранять, т.е. это не активная запись.

Но, конечно, есть около 80 строк кода, которые генерируют данные для отчета.

Где я должен разместить эти строки?

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


person Bishma Stornelli    schedule 01.11.2012    source источник


Ответы (4)


Я бы создал каталог в приложении под названием reports и поместил бы туда все свои отчеты.

Все в каталоге приложения в rails можно найти, если имя файла и класс соответствуют обычному соглашению.

Например, если у вас есть следующее в app/reports/example_report.rb:

class ExampleReport
  def initialize
    ...
  end
end

Вы сможете использовать его со своих контроллеров как таковой:

class SomethingController < ApplicationController
  def something
    example = ExampleReport.new
    ...
  end
end

Отчеты, основанные на моделях, считаются частью домена вашего приложения, поэтому я рекомендую каталог приложения. Простота добавления подкаталогов в приложение означает, что вы можете поддерживать логическое разделение различных ролей в вашем приложении. Нетрудно догадаться, где находится реализация чего-либо. Контроллеры в app/controllers, модели в app/models, следовательно, отчеты в app/reports. И, например, если бы вы добавили общие классы обслуживания в свое приложение, они могли бы войти в app/services.

Напротив, они не принадлежат lib, потому что они не могут работать в обычном режиме. В дополнение к этому, только тот код, который вы могли бы использовать в любом проекте rails, находится в каталоге lib.

person Fitzsimmons    schedule 01.11.2012

Я бы сказал, что что-то подобное будет принадлежать вспомогательному методу/методам.

person Ian Armit    schedule 01.11.2012

Когда у вас есть бизнес-логика, не привязанная к постоянству, вы можете размещать ее в моделях без наследования от ActiveRecord. Видеть:

person TuteC    schedule 01.11.2012

Helpers лучше разместить этот код,

Также убедитесь, что код, связанный с чистой логикой для выборки/обработки данных, все еще должен идти к model

person Rahul garg    schedule 01.11.2012
comment
Поправьте меня, если я ошибаюсь, но разве хелперы не предназначены для определения методов форматирования данных? как печатать строки или числа в разных форматах? Должны ли они управлять логикой данных? Вы говорите, что это должно относиться к моей модели, но что, если у меня нет модели, связанной с этим отчетом? Должен ли я создавать непостоянную модель для каждого отчета, который я хочу создать? - person Bishma Stornelli; 01.11.2012