Изменить формат даты по умолчанию в_s в области видимости библиотеки

Я хочу, чтобы все даты в объеме библиотеки имели общий формат ("%d.%m.%Y") вместо значения по умолчанию ("%Y-%d-%m"). На данный момент я придумала 3 различных подхода (и мне не нравится ни один из них), чтобы достичь того, чего я хочу. Все они представлены ниже в порядке от наиболее до менее болезненных:

  1. явным образом определить все атрибуты с датами и преобразовать их в нужный формат в экспортере;
  2. переопределить to_s метод для каждого Date экземпляр с необходимым форматом;
  3. определить пользовательский потомок Date класс с обычаем to_s метод.

Дополнительная информация:

  • Исходный объект может иметь до 3 вложений с атрибутами Date напечатайте на каждом из них;
  • Имена атрибутов Date тип может варьироваться;
  • Я использую Virtus Gem.

Вопрос в следующем:

Есть ли лучший способ справиться с проблемой, с которой я борюсь (и если нет, то какой самый элегантный способ пойти между теми, что уже представлены выше)?

1 ответ

Создайте другой модуль с уточнением для Date::to_s

module MyDate
  refine Date do
    def to_s
      # here goes your implementation of to_s
    end
  end
end

А потом:

 class NeedsCustomDateFormat
  using MyDate
  # All Date instances will have the custom to_s
 end
Другие вопросы по тегам