在我们的rails应用程序中,时区在我们的环境文件中设置为UTC。在我们的生产或登台服务器上运行时,这不会导致任何问题。但是,我们的本地开发机器都没有在系统时钟中设置为UTC,这在比较日期时会导致一些测试失败。这是因为当我们调用DateTime.now
时,Rails正在使用UTC,因为我们的MySQL数据库正在使用系统时间(在我的情况下是CST)。
有没有办法确保在某些情况下,DateTime.now
不使用UTC时区?我想我要求的是一种纯粹的SQL方式来更新日期字段,绕过Rails引擎。
答案 0 :(得分: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
这对我有用,但我将包括制作在内的所有内容都改为当地时间。但我不知道为什么这种方法不适用于每个环境!