在rails应用程序中如何格式化日期到模型中多个字段?

时间:2019-05-28 02:46:12

标签: ruby-on-rails date model input-mask

我在Rails中有一个表单,该表单的日期字段带有格式为mm/dd/yyyy的输入掩码,但是在保存时,由于模型的格式为{{1} }。我找到了可能可行的解决方案。

dd/mm/yyyy

但是我需要一个更优雅的解决方案,因为我拥有更多类型为date的字段,并且我不能为每个字段都这样做,并且将格式更新为输入掩码到 def organization_date=(val) date = Date.strptime(val, “%m/%d/%Y”) if val.present? write_attribute(:organization_date, date) end 也不可行,因为客户端的要求格式为dd/mm/yyyy

我正在使用Rails 6.0 beta

对于能帮助解决此问题的任何想法,我表示感谢

3 个答案:

答案 0 :(得分:1)

您可以将活动记录默认配置为这种格式,但是我建议以下解决方案。因此您可以轻松地在整个应用程序中格式化日期。

猴子补丁Date类是这样的:

[Service]
ExecStart=/usr/bin/dockerd -H fd:// --insecure-egistry=<repo-address>:<port>

用法:

# config/initializers/date.rb

class Date
  def to_fd
    strftime('%m/%d/%Y')
  end
end

答案 1 :(得分:0)

在您的config/initializers/中创建date_format.rb

# Date
Date::DATE_FORMATS[:default] = "%m/%d/%Y" 

然后重新启动Rails服务器。

答案 2 :(得分:0)

我认为最好的解决方法是在config / initializers / date_format.rb中创建一个文件

module Typecasting
  module Date
    def cast_value v
      ::Date.strptime v, "%m/%d/%Y" rescue super
    end
  end

  ::ActiveRecord::Type::Date.prepend Date
end