Часовой пояс моего приложения установлен на Pacific.
# application.rb:
config.time_zone = 'Pacific Time (US & Canada)'
Для моего рабочего сервера установлено тихоокеанское время.Но ActiveRecord устанавливает часовой пояс postgres для сеанса в 'UTC':
[1] pry(main)> ActiveRecord::Base.connection.execute("show timezone").getvalue(0,0)
(0.2ms) show timezone
=> "UTC"
. Документы говорят, что у меня только два варианта для config.active_record.default_timezone
: :utc
и :local
Использование :local
хорошо для производства, но мой сервер разработки находится в другом часовом поясе.
Я знаю, что часто рекомендуется оставить все настройки часового пояса в UTC по умолчанию, но мое приложениеинтенсивно использует функции времени и даты postgres для заданий ETL, сложных запросов анализа данных и т. д. Я бы предпочел, чтобы postgres был моим «единственным источником правды», а не rails / ruby, поэтому мне не интересны ответы, которые говорят мне делать всев UTC
Редактировать: я подтвердил, что config.time_zone
установлен правильно:
[6] pry(main)> Rails.application.config.time_zone
=> "Pacific Time (US & Canada)"
и config.active_record.default_timezone
установлено на :local
[9] pry(main)> Rails.application.config.active_record.default_timezone
=> :local
в том же сеансе:
[10] pry(main)> ActiveRecord::Base.connection.execute("show timezone").getvalue(0,0)
(0.2ms) show timezone
=> "Asia/Bangkok"