Недавно я добавил в свою базу данных столбец с именем created_at_user_time
(изначально не имел значения), который должен содержать отметку времени created_at, преобразованную в часовой пояс. Я сделал быстрый скрипт, который должен был делать преобразования и сохранять их в новой колонке. Однако после того, как я закончил, я заметил, что исходные временные метки были только что скопированы в новые. Я решил исследовать в консоли рельсов и получил следующее.
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
У кого-нибудь есть идеи, как это сделать правильно?