如何将日期格式化为 rails 应用程序模型中的多个字段?
how format date to multiple fields in the model in the rails app?
我在 rails 中有一个表单,它有一个带有输入掩码的日期字段,格式为 mm/dd/yyyy
,但在保存它的那一刻,由于格式模型是 dd/mm/yyyy
。我找到了一个可能可行的解决方案。
def organization_date=(val)
date = Date.strptime(val, “%m/%d/%Y”) if val.present?
write_attribute(:organization_date, date)
end
但我需要一个更优雅的解决方案,因为我有更多日期类型的字段,我不能对每个字段都这样做,更新格式以输入掩码到 dd/mm/yyyy
也不是一个选项,因为客户的要求是格式 mm/dd/yyyy
我正在使用 Rails 6.0 beta
我很感激任何有助于解决这个问题的想法
在您的 config/initializers/
中创建 date_format.rb
:
# Date
Date::DATE_FORMATS[:default] = "%m/%d/%Y"
然后重新启动 rails 服务器..
您可以将活动记录默认配置为此格式,但我建议采用以下解决方案。这样您就可以轻松地在整个应用程序中设置日期格式。
猴子补丁日期 class 像这样:
# config/initializers/date.rb
class Date
def to_fd
strftime('%m/%d/%Y')
end
end
用法:
Date.today.to_fd
=> "05/28/2019"
我认为最好的修复方法是,在 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
我在 rails 中有一个表单,它有一个带有输入掩码的日期字段,格式为 mm/dd/yyyy
,但在保存它的那一刻,由于格式模型是 dd/mm/yyyy
。我找到了一个可能可行的解决方案。
def organization_date=(val)
date = Date.strptime(val, “%m/%d/%Y”) if val.present?
write_attribute(:organization_date, date)
end
但我需要一个更优雅的解决方案,因为我有更多日期类型的字段,我不能对每个字段都这样做,更新格式以输入掩码到 dd/mm/yyyy
也不是一个选项,因为客户的要求是格式 mm/dd/yyyy
我正在使用 Rails 6.0 beta
我很感激任何有助于解决这个问题的想法
在您的 config/initializers/
中创建 date_format.rb
:
# Date
Date::DATE_FORMATS[:default] = "%m/%d/%Y"
然后重新启动 rails 服务器..
您可以将活动记录默认配置为此格式,但我建议采用以下解决方案。这样您就可以轻松地在整个应用程序中设置日期格式。
猴子补丁日期 class 像这样:
# config/initializers/date.rb
class Date
def to_fd
strftime('%m/%d/%Y')
end
end
用法:
Date.today.to_fd
=> "05/28/2019"
我认为最好的修复方法是,在 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