ruby-on-rails - ActiveRecord 中从 Rails 2.3 到 3.2 的日期转换

标签 ruby-on-rails ruby-on-rails-3 date datetime activerecord

我正在从 Rails 2.3 升级到 3.2,我在日期转换方面遇到了问题。

在 rails 2.3 中,日期转换默认格式是 mm/dd/yyyy,当我将这种格式的字符串分配给 active_record 模型时,它会正确转换日期。例如

我有一个用户对象(active_record 对象)和

在 rails 2.3 中

user.registered_on = "10/03/2013" #=> Oct 3, 2013

但在 rails 3.2 中也是一样

user.registered_on = "10/03/2013" #=> March 10, 2013

如何解决这个问题?

我曾尝试在其中一个初始化文件中设置 Date::DATE_FORMATS[:default] = '%m/%d/%Y',但这没有任何用处。

我什至为日期设置了语言环境,但效果不佳。

重现此问题的一个完美方法是:

  1. 创建两个应用程序,一个在 rails 2.3.x 版本中,另一个在 rails 3.2.x 版本中。

  2. 在每个应用程序中创建一个至少包含一个日期时间字段的模型。

  3. 为这两个应用程序创建和迁移数据库。

  4. 在每个应用程序中从您的终端转到 Rails 控制台。

  5. 创建一个 active_record 模型对象并将这个“10/3/2013”​​字符串分配给 datetime 字段,然后看到结果是不同的日期。

我只需要一个解决方案,如何修复此日期或日期时间转换并使其与 rails 2.3 相同

最佳答案

gem "american_date"解决了这个问题。

https://github.com/jeremyevans/ruby-american_date

关于ruby-on-rails - ActiveRecord 中从 Rails 2.3 到 3.2 的日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19294803/

相关文章:

ruby-on-rails - Rails 3 路由到错误的 Controller

ruby-on-rails-3 - 设计和 OmniAuth-Identity

c# - 将此字符串转换为日期时间对象

ruby-on-rails - 防止某些 DOM 层次结构中的 AngularJS 插值

ruby-on-rails - 为什么测试在生产模式下运行并导致我的脚本/运行程序失败?

ruby-on-rails - 为什么此 rails 形式找不到正确的路径?

jquery - 在 jQuery UI Datepicker 中禁用 future 日期

python - 手动假设日期 - 使用自己的假设更新日期

ruby-on-rails - 如何在 Rails 中获取随机记录?

ruby-on-rails - Rails "Show"路线