Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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 关于config.active\u record.default\u时区_Ruby On Rails - Fatal编程技术网

Ruby on rails 关于config.active\u record.default\u时区

Ruby on rails 关于config.active\u record.default\u时区,ruby-on-rails,Ruby On Rails,我的应用程序中有以下内容: config.active_record.default_timezone = :local 因此,每当有东西保存到数据库时,它就会给发布它的用户的时区加上时间戳 猜猜看。。但是如果用户在EST中,则时间戳是相对于EST的。如果它们在PST中,则戳记相对于PST 因此,如果他们要提取小时数,那么数据库会将其转换回最初存储为的时间。当然,这一切都发生在轨道的引擎盖下,而且没有这种转换的实际记录 比如说,我把日期定在下午4点。我检查了我的数据库,它是UTC格式的。然后,

我的应用程序中有以下内容:

config.active_record.default_timezone = :local
因此,每当有东西保存到数据库时,它就会给发布它的用户的时区加上时间戳

猜猜看。。但是如果用户在EST中,则时间戳是相对于EST的。如果它们在PST中,则戳记相对于PST

因此,如果他们要提取小时数,那么数据库会将其转换回最初存储为的时间。当然,这一切都发生在轨道的引擎盖下,而且没有这种转换的实际记录

比如说,我把日期定在下午4点。我检查了我的数据库,它是UTC格式的。然后,如果我在视图中显示该日期,它将返回到我的本地时区,而我没有特别说明

问题来了

假设我希望Resque工作人员在弗吉尼亚州的服务器上一夜之间克隆一个对象,该对象最初是由居住在爱尔兰的用户创建的

将发生的情况是,对象将更新到服务器的本地时间,而不是用户


问题:如何提取该对象保存的原始本地时间?

我假设您将用户的时区存储在某个位置,并在每次请求时设置它,最有可能是在
应用程序\u controller.rb
中。显然,此步骤不是由Resque worker执行的,因此它将默认为服务器时区

如果worker中的对象或某个变量以某种方式与特定用户关联,则可以在worker方法中获取用户的时区,并像在主应用程序中一样进行设置:

Time.zone = obj.user.time_zone

或者,如果合适的话,将时区存储在对象本身。

我从未使用过这种东西,但我想最好总是以utc存储时间,并将用户的时区分开存储,因为这应该是表示层的功能。非常感谢,我已经做到了。我想这就是我的解决方案