Установка часового пояса только в контроллере - PullRequest
0 голосов
/ 22 мая 2018

У меня есть приложение Rails, в котором я устанавливаю часовой пояс для каждого запроса в действии before в моем контроллере следующим образом:

Time.zone="Central Time (US & Canada")

Я могу напечатать часовой пояс с помощью

puts Time.zone

и это то, что распечатано.

(GMT-06:00) Central Time (US & Canada)

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

Если из моего контроллера я вызову приведенный ниже метод из моей модели, он печатает время UTC.

Модель

def self.import_file(file)
    puts Time.zone
    # this prints out UTC time. 
end

Это ожидаемое поведение или я что-то упустил?

1 Ответ

0 голосов
/ 23 мая 2018

Time.zone устанавливается как переменная потока.Если вы находитесь в другом потоке (то есть фоновый рабочий, процесс, irb), Time.zone будет по умолчанию для вашего приложения (обычно устанавливается в config/application.rb).

Если вы не в другомпоток / процесс, убедитесь, что вы случайно не звоните Time.zone = nil.Вы также должны проверить пример Rails Time.use_zone на http://api.rubyonrails.org/classes/Time.html#method-c-use_zone.

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