1

我希望库范围内的所有日期都具有通用格式 ( "%d.%m.%Y") 而不是默认格式 ( "%Y-%d-%m")。现在我想出了 3 种不同的方法(我不喜欢其中任何一种)来完成我想要的。所有这些都按从最痛苦到最不痛苦的顺序排列如下:

  1. 明确定义所有带有日期的属性,并在导出器中将它们转换为必要的格式;
  2. 用必要的格式为每个实例重新定义to_s方法;Date
  3. Date使用自定义方法定义类的自定义后代to_s

附加信息

  • 初始对象最多可以有 3 个嵌套,Date每个嵌套都有 type 属性;
  • 类型属性的名称Date可以变化;
  • 我正在使用 Virtus gem。

问题如下:

有没有更好的方法来处理我正在努力解决的问题(如果没有,在上面已经表示的问题之间进行最优雅的方法是什么)

4

1 回答 1

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
于 2017-07-13T11:55:54.583 回答