【问题标题】:How to set date interpretation/format?如何设置日期解释/格式?
【发布时间】:2014-06-02 00:50:48
【问题描述】:

我通过将参数从发布的表单传递给模型来动态更新底层模型,如下所示:

@model.assign_attributes(params[:model])

我有一个日期以及格式为mm/dd/yyyy 的其余帖子数据。据我所知,Ruby 似乎在解析这个日期,就好像它的格式是dd/mm/yyyy。因此,例如,当我输入日期 4/15/2014 时,模型无法保存,因为月份 15 不存在(我假设,实际上我只是被告知日期字段是必需的)。

如何配置 Ruby 以将我的日期解析为 mm/dd/yyyy

【问题讨论】:

    标签: ruby ruby-on-rails-3 rails-activerecord ruby-2.1


    【解决方案1】:

    对日期使用strptime 方法并提供格式。

    Date.strptime("4/15/2014","%m/%d/%Y")
    #=> #<Date: 2014-04-15 ((2456763j,0s,0n),+0s,2299161j)>
    

    如果您希望在模型中进行转换,您可能必须指定像 before_update 这样的回调。 例如

    class YourModel < ActiveRecord::Base
    
    
      before_update :format_date
    
    
      def format_date
        date_field = Date.strptime(date_field,'%m/%d/%Y')
      end
    end
    

    【讨论】:

    • 控制器不知道底层模型。它是一个通用的基类,正在进行保存。所以我想全局设置这种格式。
    • 我找不到这样做的方法。(不是说没有)但控制器不需要知道模型。模型只需要知道输入格式,以便在保存之前更改它。
    • 最终在使用 strpdate 发布后“修复”了 :when 参数。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多