объект datetime обновляется при редактировании в Rails Admin - PullRequest
0 голосов
/ 17 января 2019

Итак, в моей базе данных PostgreSQL, размещенной на Heroku, есть таблица Restaurant, в которой, среди прочего, есть два столбца datetime: opens и closes, которые представляют расписание каждого ресторана.

Я использую Rails Admin с моим бэкэндом Rails. Каждый раз, когда я хочу редактировать Ресторан, например, чтобы изменить phone_number ресторана ( NB: без прикосновения к opens или closes), обновляются opens и closes, когда я сохраняю изменения и получаю еще один час. Например. если opens для конкретного ресторана было 12:00, а closes было 14:00, то оно становится 13:00 и 15:00.

Опять же, не меняя opens или closes себя вообще.

Вероятно, это как-то связано с моим часовым поясом: в application.rb у меня есть это:

# timezone
config.time_zone = 'Paris'
config.active_record.default_timezone = :local

# languages

config.i18n.default_locale = :fr 

что я могу сделать, чтобы избежать обновления даты и времени?

РЕДАКТИРОВАТЬ:

используемая версия:

  • рельсы (5.1.6)
  • rails_admin (1.4.2)

1 Ответ

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

я нашел githubGist, чтобы явно установить часовой пояс на RailsAdmin:

# Credits for https://gist.github.com/jackdesert/7090731
# rails_admin.rb

require 'rails_admin/config/fields/base'

module RailsAdmin
  module Config
    module Fields
      module Types
        class Datetime < RailsAdmin::Config::Fields::Base

           def value
             value_in_default_time_zone = bindings[:object].send(name)
             return nil if value_in_default_time_zone.nil?
             pacific_time_zone = ActiveSupport::TimeZone.new('Europe/Paris')
             value_in_default_time_zone.in_time_zone(pacific_time_zone)
           end
        end
      end
    end
  end
end

Для этого требуется ваш часовой пояс конфигурации в staging.rb и production.rb файлах, и вы должны прекомпилировать ресурсы в вашем развертывании

...