неправильное время при создании объекта Time в Rails - PullRequest
0 голосов
/ 03 января 2019

Итак, у меня есть модель Restaurant с двумя time столбцами:

t.time "opens"
t.time "closes"

Когда я создаю Ресторан из моего интерфейса администратора (используя Rails Admin ), кажется, чтоправильное время учитывается (например, 12:00), но на моем веб-сайте и в интерфейсе администратора оно отображается с еще одним часом (13:00).

Вот несколько интересных выводов консоли:

irb(main):003:0> Restaurant.first
=> #<Restaurant id: 1, name: "Afrofoods", closes: "2000-01-01 14:00:00", opens: "2000-01-01 12:00:00", created_at: "2019-01-03 15:24:02", updated_at: "2019-01-03 15:24:02">

irb(main):004:0> Restaurant.first.opens
=> Sat, 01 Jan 2000 13:00:00 CET +01:00

irb(main):005:0> Time.now
=> 2019-01-03 16:31:54 +0000

Вероятно, это вопрос часового пояса, так как я нахожусь во Франции, а мои серверы находятся в Великобритании.Но как мне это сделать?Должен ли я сохранять свои рестораны в моей БД, устанавливая каждый раз объект на один час меньше?Или я должен попытаться что-то изменить в коде?

PS: Мне плевать на дату;Я использую только время.

1 Ответ

0 голосов
/ 03 января 2019

Всегда сохраняйте время в UTC для базы данных.И тогда вы можете управлять часовыми поясами в приложении Rails.Например, вы можете добавить столбец часовых поясов в текущую запись пользователя / администратора и добавить команду__области в контроллер приложения или просто указать часовой пояс в настройках приложения.

    around_action :set_time_zone

    private

    def set_time_zone
      Time.use_zone(current_user.timezone) { yield }
    end

Примечание: лучше использовать время.current over Time.now, если часовые пояса актуальны для вашего проекта.Время.Ток как Time.zone.now

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