Создание подклассов из выпадающего меню - PullRequest
0 голосов
/ 17 октября 2019

У меня есть страница, которая позволяет пользователю запускать отчет. Я использую Rails 5. Моя страница отчетов позволяет пользователю выбирать разные типы отчетов. Итак, у пользователя есть выпадающий список со следующими параметрами: Tax, Order, Refund и так далее.

В зависимости от их выбора, я создам экземпляр подкласса моего Reports::Report класса для их выбранной опции.

В настоящее время я делаю это:

if params[:report_type] == "Tax"
    Reports::Tax.new.run
elsif params[:report_type] == "Order"
    Reports::Order.new.run
elsif params[:report_type] == "Refund"
    Reports::Refund.new.run
end

Как я могу реструктурировать этот код, чтобы у меня не было бесконечно длинного списка условий для запуска определенных типов отчетов? Какой ООП подход к решению этой проблемы?

Заранее спасибо.

1 Ответ

0 голосов
/ 17 октября 2019

Что ж, если значения ваших опций соответствуют точным классам, которые вы определили в модуле «Отчеты» (я имею в виду, например, ваши опции выбора: Tax, Order, Refund, и у вас есть точное Reports::Tax, Reports::Order, Reports::Refund определено) вы можете попробовать следующее

begin
  report = Object.const_get("Reports::#{params[:report_type]}")
  report.new.run
rescue 
  # error handler for not existing report type
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...