Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 更正Rails Postgresql数据库中的列(时区问题)_Ruby On Rails_Postgresql_Datetime_Heroku_Utc - Fatal编程技术网

Ruby on rails 更正Rails Postgresql数据库中的列(时区问题)

Ruby on rails 更正Rails Postgresql数据库中的列(时区问题),ruby-on-rails,postgresql,datetime,heroku,utc,Ruby On Rails,Postgresql,Datetime,Heroku,Utc,当我构建我的web应用程序时,在我不知情的情况下,默认设置为使用UTC。我的模型的一个属性是名为event_date的DateTime,它由用户手动设置。用户认为我们选择的是CST,而幕后的一切仍然是UTC 现在我从Facebook Graph API中提取事件,它们显示“错误”的时间(我最近发现的实际上是正确的UTC时间)。当我将application.rb文件更改为包含 config.time_zone = 'Central Time (US & Canada)' 它解决了Face

当我构建我的web应用程序时,在我不知情的情况下,默认设置为使用UTC。我的模型的一个属性是名为event_date的DateTime,它由用户手动设置。用户认为我们选择的是CST,而幕后的一切仍然是UTC

现在我从Facebook Graph API中提取事件,它们显示“错误”的时间(我最近发现的实际上是正确的UTC时间)。当我将application.rb文件更改为包含

config.time_zone = 'Central Time (US & Canada)'
它解决了Facebook时代错误的问题。但是,我以前的所有数据库条目现在都不正确,因为它们的事件日期被输入为不正确的UTC时间

解决这个问题的最佳方法是什么?我认为最好的方法是将数据库中的整个event_date列转换或偏移为正确的UTC时间,但我不确定如何执行此操作


这个应用程序是用RubyonRails构建的,我使用Postgresql,我通过Heroku进行部署

您是否尝试将时区用户集保存到数据库中,然后再将其转换为正确的时区用户集?然后,您可以使用in_time_zone功能设置时间。rails中的每个日期都以UTC格式保存。如果我理解正确,这听起来是一个很好的未来解决方案,但是如何将缺少时区字段的当前数据库调整为正确的数据库呢?因为现在我们只处理CST,所以我的所有条目都需要在其事件日期中添加6个小时。好吧,您可以将所有用户更新到该时区,或者如果您确定您只有一个时区可以在硬编码时区的\u时区功能中使用。我不太确定我是否遵循。我的模型用于活动,带有图像、标题等和活动日期。事件日期都存储在my Postrgres数据库中的UTC中,并且都与实际时间相差6小时。我想更新我的整个数据库,使其事件日期字段移动6小时。接下来,我将把Rails的默认时区改为CST,这个问题应该可以解决了。如果我们有新时区的用户,我将对此负责。这个过程有意义吗?如果是这样的话,我该如何一次更改所有事件的日期事件字段呢?您可以尝试如下操作:User.all.each{u | u.event_date=u.event_date+6.hours;u.save};无