Лучшая структура класса для функции отчета - PullRequest
0 голосов
/ 17 октября 2019

У меня есть функция в приложении Rails 5, которая позволяет пользователям запускать отчеты о заказах, налогах или возмещениях.

Я планирую поместить некоторые классы и модули в мою папку app / lib, но я хотел сделатьуверен, что у меня была лучшая структура класса / модуля. Вот что я подумал сделать:

На внешнем интерфейсе у моего пользователя есть дата начала и окончания, а также раскрывающийся список для report_type.

Я думал о создании родительского класса отчета здесь: app/lib/reports/report.rb

module Reports
    class Report
        #parent class

        def find_report(params)
            #ensure params contains a valid subclass name first
            #then return the correct subclass type
            return Reports.const_get(params[:report_type]).new
        end
    end
end

Затем, создавая подклассы для Order, Tax и Refund, вот так:

module Reports
    class Order < Reports::Report
        def run_report
            #code specific to running an order report
        end
    end
end

Тогда я мог бы позвонить Reports::Report.new.find_report(params) или Reports::Order.new в зависимости от моих обстоятельств. Это лучший способ структурировать эти классы и модули?

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