我最近在我的数据库中添加了一个名为created_at_user_time
(最初没有值)的列,它应该包含一个时区转换的 created_at 时间戳。我制作了一个快速脚本,该脚本应该进行转换并将其保存在新列中。然而,在我完成后,我注意到原来的时间戳刚刚被复制到新的时间戳中。我决定在 Rails 控制台中进行调查并得到以下信息。
1.9.3p194 :002 > user.time_zone
=> "Central Time (US & Canada)"
1.9.3p194 :003 > test = user.orders.first
1.9.3p194 :004 > test.created_at
=> Wed, 02 Jan 2013 02:02:54 UTC +00:00
1.9.3p194 :006 > newstamp = test.created_at.in_time_zone("#{user.time_zone}")
=> Tue, 01 Jan 2013 20:02:54 CST -06:00
1.9.3p194 :008 > test.created_at_user_time = newstamp
=> Tue, 01 Jan 2013 20:02:54 CST -06:00
#ok, now lets save and check it
1.9.3p194 :009 > test.save
(0.4ms) begin transaction
(0.1ms) commit transaction
=> true
1.9.3p194 :010 > test = user.orders.first
1.9.3p194 :011 > test.created_at_user_time
=> Wed, 02 Jan 2013 02:02:54 UTC +00:00
有人对如何正确执行此操作有任何想法吗?