Как сохранить даты в местном часовом поясе в БД с rails3? - PullRequest
7 голосов
/ 30 марта 2011

У меня есть приложение Rails3 с пользователем модели и полем expires_at, созданным так:

t.column :expires_at, :timestamp

В моей базе данных (postgresql) оно имеет тип:

timestamp without timezone

Проблема в том, что язвоните:

@user.expires_at = Time.now
@user.save

он сохраняется в базе данных с часовым поясом UTC (мое местное время UTC + 1:00, Варшава), но я не хочу этого.Я просто хочу, чтобы время с моим местным часовым поясом было сохранено в базе данных (2011-03-30 01: 29: 01.766709, а не 2011-03-29 23: 29: 01.766709)

Можно ли добиться этого с помощью rails3

Ответы [ 2 ]

9 голосов
/ 30 марта 2011

Для сохранения времени в местном часовом поясе в базе данных это должно быть установлено в application.rb

 config.active_record.default_timezone = :local
2 голосов
/ 28 апреля 2014

Если вы хотите использовать только локальное время для определенных столбцов, а не в качестве глобального параметра, то документация Rails сообщает нам следующее:

# If your attributes are time zone aware and you desire to skip time zone conversion to the current Time#zone when reading certain attributes then you can do following:

class Topic < ActiveRecord::Base
  self.skip_time_zone_conversion_for_attributes = [:written_on]
end

(Это также пропускает преобразование часового пояса при записи, а не только при чтении). И вы можете передать массив символов для нескольких атрибутов.

Однако я не уверен, в каких версиях Rails это было представлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...