2012-03-15 1 views
0

У меня возникла проблема с тем, чтобы получить правильное время для сохранения в моей базе данных. Если я сделаю SELECT NOW() в postgres, я получу нужное время в EDT. Когда я делаю Time.now в рубиновой консоли, я получаю и правильное время. Я могу даже взять то, что получаю от Time.now, и вручную скопировать/вставить его и сохранить его в базу данных через psql, и это будет правильно. Проблема в том, что когда я пытаюсь сэкономить время в коде, время будет прыгать на 3 или 4 часа вперед.Экономия времени в Ruby on Rails для базы данных Postgres

Если кто-то должен видеть, что я получаю от Time.now или SELECT NOW(), дайте мне знать, и я отправлю его, когда вернусь домой.

Я уверен, что есть что-то маленькое, с видом, но я не могу понять это! Я предполагаю, что это может быть распространенной проблемой для людей, создающих Ruby on Rails с postgres. Спасибо за помощь.

+0

Сколько времени вы пытаетесь захватить? – swasheck

+0

Что дает Time.zone.now? – Robin

+0

Чт, 15 Мар 2012 22:34:30 UTC +00: 00 Я думаю, это моя проблема –

ответ

1

Rails 3 по умолчанию сохраняет все время в базе данных относительно в часовом поясе GMT ​​+ 00: 00. Таким образом, вам придется устанавливать смещение во время вычисления времени в зависимости от вашего часового пояса. В противном случае, вы можете изменить по умолчанию ActiveRecord часовой пояс, добавив следующее в application.rb

config.time_zone = 'Your time zone' (Example: 'Eastern Time (US & Canada)') 
config.active_record.default_timezone = 'Your time zone' (Example: 'Eastern Time (US & Canada)')