Ruby on rails 3 Rails:确保datetime使用系统时间
在我们的rails应用程序中,时区在我们的环境文件中设置为UTC。在生产或临时服务器上运行时,这不会导致任何问题。但是,我们的本地开发机器在系统时钟中没有设置为UTC,这导致在比较日期时出现一些测试失败。这是因为Rails在调用Ruby on rails 3 Rails:确保datetime使用系统时间,ruby-on-rails-3,datetime,timezone,Ruby On Rails 3,Datetime,Timezone,在我们的rails应用程序中,时区在我们的环境文件中设置为UTC。在生产或临时服务器上运行时,这不会导致任何问题。但是,我们的本地开发机器在系统时钟中没有设置为UTC,这导致在比较日期时出现一些测试失败。这是因为Rails在调用DateTime.now时使用UTC,而MySQL数据库使用的是系统时间(在我的例子中是CST) 是否有办法确保在某些情况下,DateTime.now不使用UTC时区?我想我想要的是一种纯SQL的更新日期字段的方法,它绕过了Rails引擎。实际上,您应该能够告诉Rails
DateTime.now
时使用UTC,而MySQL数据库使用的是系统时间(在我的例子中是CST)
是否有办法确保在某些情况下,
DateTime.now
不使用UTC时区?我想我想要的是一种纯SQL的更新日期字段的方法,它绕过了Rails引擎。实际上,您应该能够告诉Rails仅在开发
和其他环境(如测试
)中使用本地设置,方法是将其添加到相应的配置/环境
文件中:
config.time_zone = "Eastern Time (US & Canada)" #Change this
config.active_record.time_zone_aware_attributes = false
config.active_record.default_timezone = :local
这对我来说很管用,但我把包括制作在内的一切都转到了当地时间。但我不知道;我不明白为什么这种方法在每个环境下都不起作用 这种方法唯一的问题是,我们的开发团队在不同的时区中分散,我们必须找到一种方法,防止git每次提交时都覆盖环境文件。有趣的。。。我将使用config/initializers中定义常量的文件,即.gitignore。不确定是否可以从config/environment访问初始值设定项中定义的常量。。。取决于首先加载的是哪个