По умолчанию в Rails 'config.time_zone
указано UTC. Таким образом, поля типа created_at
, updated_at
сохраняются в UTC.
Теперь предположим, что часовым поясом пользователя является стандартное тихоокеанское время (PST).
Чтобы показывать дату и время в часовом поясе пользователя, я установил Time.zone
в PST.
Теперь, когда пользователь вводит в форму дату (в местном часовом поясе пользователя, то есть PST), эта дата принимается в контроллере в соответствии с настройкой Time.zone
.
Но я хочу сохранить все время в базе данных в формате UTC.
Итак, как мне преобразовать любое поле даты / времени на месте в хэше параметров в UTC? Мне интересно, есть ли решение, где Rails может сделать преобразование автоматически?
Я хотел бы, чтобы любая дата / время, полученное для любого поля даты и времени, была преобразована в UTC, без необходимости писать код преобразования в каждом контроллере.
UPDATE
Я проверил, установив для Time.zone значение Pacific Time (US & Canada)
, а также Eastern Time (US & Canada)
и затем сохранив модель. Время created_at
в обоих случаях было UTC
. Таким образом, это подтверждает, что установка Time.zone
не влияет на то, какое время экономит Rails в поле created_at
. На это значение влияет только config.time_zone
(которое, если оно не определено в application.rb
, по умолчанию будет UTC)
Я так смущен этим всем!