Как обрабатывать дату / время в параметрах POST? - PullRequest
1 голос
/ 22 февраля 2011

По умолчанию в 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)

Я так смущен этим всем!

1 Ответ

1 голос
/ 22 февраля 2011

В базе данных все даты всегда сохраняются как UTC. Параметр config.time_zone устанавливает значение по умолчанию для Time.zone только для отображения. Таким образом, вам не нужно ничего делать, чтобы получить желаемое поведение, просто правильно установите Time.zone для пользователя, а rails позаботится обо всем остальном.

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