Как изменить часовой пояс по умолчанию для активной записи в Rails?
в своем application.rb
я наткнулся на следующий комментарий
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
config.time_zone = 'Eastern Time (US & Canada)'
как вы видите сверху, я сделал config.time_zone
есть время. Однако, все же, когда записи создаются в БД, это выглядит как datetime
хранится в формате UTC.
в приведенном выше комментарии они говорят
...и сделать активную запись автоматически конвертировать в эту зону...
как я могу это сделать, и где?
кроме того, я буду развертывать это на Heroku а также и я хотел бы, чтобы настройки переносились
9 ответов:
добавляем следующее
application.rb
работаетconfig.time_zone = 'Eastern Time (US & Canada)' config.active_record.default_timezone = :local # Or :utc
я решил собрать этот ответ, потому что все остальные кажутся неполными.
config.активная запись.default_timezone определяет, следует ли использовать время.local (если установлено значение :local) или Time.utc (если установлено значение: utc) при извлечении даты и времени из базы данных. Значение по умолчанию :utc. http://guides.rubyonrails.org/configuring.html
если вы хотите изменить рейлинги часовой пояс, но продолжайте иметь Активная Запись сохранить в базе данных в UTC используйте
# application.rb config.time_zone = 'Eastern Time (US & Canada)'
если вы хотите изменить рейлинги часовой пояс и есть Активная Запись храните время в этом часовом поясе, используйте
# application.rb config.time_zone = 'Eastern Time (US & Canada)' config.active_record.default_timezone = :local
предупреждение: вы действительно должны подумать дважды, даже трижды, прежде чем сохранять время в базе данных в формате, отличном от UTC.
Примечание
Не забудьте перезагрузить сервер Rails после измененияapplication.rb
.
помните, что
config.active_record.default_timezone
может принимать только два значения
- : local (преобразуется в часовой пояс, определенный в
config.time_zone
)- : utc (преобразуется в UTC)
вот как вы можете найти все доступные часовые пояса
rake time:zones:all
config.time_zone = 'Adelaide' и
config.active_record.default_timezone = :local
была выигрышная комбинация. Вот это что я нашел во время процесса.
в моем случае (рельсы 5), я закончил тем, что добавил Эти 2 строки в моем
app/config/environments/development.rb
config.time_zone = "Melbourne" config.active_record.default_timezone = :local
вот именно! И чтобы убедиться, что Мельбурн был прочитан правильно, я запустил команду в своем терминале:
bundle exec rake time:zones:all
и Мельбурн был листинг в часовом поясе я нахожусь!
Если вы хотите установить часовой пояс в UTC глобально, вы можете сделать следующее в Rails 4:
# Inside config/application.rb config.time_zone = "UTC" config.active_record.default_timezone = :utc
обязательно перезапустите приложение, иначе вы не увидите изменений.
на рельсах 4.2.2, перейдите к
application.rb
и использоватьconfig.time_zone='city'
(например: "Лондон" или "Бухарест" или "Амстердам" и так далее).Он должен работать просто отлично. Это сработало для меня.
Я должен был добавить этот блок в мой и все было хорошо :)
Rails.application.configure do config.time_zone = "Pacific Time (US & Canada)" config.active_record.default_timezone = :local end
- я добавил до строку
Rails.application.initialize!