0

在我们的 rails 应用程序中,时区在我们的环境文件中设置为 UTC。在我们的生产或登台服务器上运行时,这不会导致任何问题。但是,我们的本地开发机器都没有在系统时钟中设置为 UTC,这在比较日期时会导致一些测试失败。这是因为当我们调用时 Rails 使用的是 UTC DateTime.now,而我们的 MySQL 数据库使用的是系统时间(在我的例子中是 CST)。

有没有办法确保在某些情况下DateTime.now不使用 UTC 时区?我想我要的是一种纯 SQL 更新日期字段的方法,它绕过了 Rails 引擎。

4

1 回答 1

0

实际上,您应该能够告诉 rails 仅将本地设置用于development其他环境,例如test通过将其添加到相应的config/environments文件:

config.time_zone = "Eastern Time (US & Canada)" #Change this
config.active_record.time_zone_aware_attributes = false
config.active_record.default_timezone = :local

这对我有用,但我将包括生产在内的所有内容都切换到了当地时间。但我不明白为什么这种方法不适用于每个环境!

于 2012-08-03T13:40:17.177 回答