У меня есть функция в приложении 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
в зависимости от моих обстоятельств. Это лучший способ структурировать эти классы и модули?