【发布时间】:2017-03-03 10:56:24
【问题描述】:
给定我想用"starts_at"=>"2016-02-04T14:30:00.000+01:00"创建的模型
此条目存储在 postgres 中,starts_at 应保持时区 - 保持原样并在 HTML 中显示很重要,准确这次 - 14:30。
对企业的意义:用户从伦敦节省时间。管理员检查来自澳大利亚的条目,他应该在用户的时区
同时我需要服务器能够正确理解现在是什么时间,所以我可以“现在选择 1 小时内的条目”
铁轨给:
[28] pry(main)> entry.starts_at
=> 2016-02-04 13:30:00 UTC
[17] pry(main)> entry.attributes_before_type_cast["starts_at"]
=> "2016-02-04 13:30:00+00"
我想 postgress 会丢弃时区,尽管我尝试了输入:
t.change :starts_at, 'timestamp with time zone'
如何在适当的时区存储/检索字段,该时区存储在 postgress 中。 它可以是不同条目的任何时区,代码不知道哪个条目具有哪个时区,所以我们不能使用in_time_zone(除非我将时区存储在单独的字段中,这似乎太假了)
是否有 do_not_touch_timezones_for :starts_at 或 starts_at.original_timezone 或全局配置之类的东西。
试过self.skip_time_zone_conversion_for_attributes = [:starts_at, :ends_at] - 没有任何效果
【问题讨论】:
标签: ruby-on-rails ruby postgresql datetime