При каких условиях я бы хотел установить другой часовой пояс уровня приложения в рельсах? - PullRequest
2 голосов
/ 11 августа 2009

Почти в каждом environment.rb есть строка для config.time_zone = 'UTC'.

Что именно делает эта строка и при каких обстоятельствах я хотел бы изменить ее (например, на config.time_zone = 'EST')?

Ответы [ 2 ]

6 голосов
/ 11 августа 2009

Просто чтобы добавить один балл к отличному ответу Райана. Если вы хотите установить его на восточное время, это не будет

config.time_zone = 'EST'

это будет

config.time_zone = 'Eastern Time (US & Canada)'

Используйте один из следующих часовых поясов, чтобы получить список доступных опций:

rake time:zones:all
rake time:zones:local
rake time:zones:us
6 голосов
/ 11 августа 2009

Настройка config.time_zone изменяет часовой пояс по умолчанию для вашего приложения Rails. Это часовой пояс, который все время будет отображаться для ваших пользователей. Это также часовой пояс, который он использует при настройке атрибутов.

Однако Rails всегда будет хранить время в формате UTC в базе данных. Перевод происходит за кулисами, поэтому (большую часть времени) вам не нужно об этом беспокоиться.

Обычно этот часовой пояс меняется на тот, в котором будет находиться большинство ваших пользователей. Вы можете запустить это задание с граблями, чтобы просмотреть все часовые пояса, которые вы можете выбрать.

rake time:zones:all

Также очень легко изменить текущий часовой пояс для каждого запроса, что позволяет каждому пользователю настраивать, в каком часовом поясе он находится. Вот пример фильтра до, который вы можете добавить в контроллер приложения.

before_filter :set_user_time_zone

private

def set_user_time_zone
  Time.zone = current_user.time_zone if logged_in?
end

См. этот эпизод Railscasts для получения дополнительной информации.

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