Как оформить формат даты для 3 разных полей с помощью Draper decorator gem

Я хочу украсить свои 3 даты, используя шаблон декоратора, я сделал то, что необходимо сделать для реализации шаблона декоратора, я написал следующий код в декораторе, чтобы украсить мои поля даты

def date1
  model.date1.strftime("%d-%m-%y")
end

def date2
  model.date2.strftime("%d-%m-%y")
end

def date3
  model.date3.strftime("%d-%m-%y")
end

и вид я звоню следующим образом

= @example.date1
= @example.date2
= @example.date3

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

подобно

class BaseDecorator < Draper::Decorator

  def format_date(model_name, attribute_name)
    model_name.attributes[attriburte_name].strftime("%d-%m-%Y")
  end
end

и мой суб декоратор выглядит так

class ExampleDecorator < BaseDecorator

  def date1
    format_date(model, "date1")
  end
  def date2
    format_date(model, "date2")
  end
  def date3
    format_date(model, "date3")
  end
end

Итак, теперь мой вопрос в суб-декораторе, тот же код повторяется, поэтому я хочу реорганизовать мой код, как мне реорганизовать мой код?

1 ответ

Вы можете рефакторинг это так же, как вы сделали в BaseDecorator учебный класс:

class ExampleDecorator < BaseDecorator
  def formatted_date(attribute_name)
    format_date(model, attribute_name)
  end
end

И по вашему мнению:

<%= @example.formatted_date("date1") %>
Другие вопросы по тегам