Изменить формат даты по умолчанию в_s в области видимости библиотеки
Я хочу, чтобы все даты в объеме библиотеки имели общий формат ("%d.%m.%Y"
) вместо значения по умолчанию ("%Y-%d-%m"
). На данный момент я придумала 3 различных подхода (и мне не нравится ни один из них), чтобы достичь того, чего я хочу. Все они представлены ниже в порядке от наиболее до менее болезненных:
- явным образом определить все атрибуты с датами и преобразовать их в нужный формат в экспортере;
- переопределить
to_s
метод для каждогоDate
экземпляр с необходимым форматом; - определить пользовательский потомок
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