在 Rails 管理员中编辑时更新日期时间对象

datetime object updated when editing in Rails Admin

所以我在 Heroku 上托管的 PostgreSQL 数据库中有一个 Restaurant table,其中有两个 datetime 列:openscloses代表每家餐厅的时间​​表。

我在 Rails 后端使用 Rails Admin。每次我想编辑餐厅时,例如更改餐厅的 phone_number注意:不触及 openscloses),openscloses当我保存修改并多花一小时时得到更新。例如。如果特定餐厅的 opens 为 12:00,而 closes 为 14:00,则它变为 13:00 和 15:00。

同样,完全不改变 openscloses 我自己。

这可能与我的时区有关:在 application.rb,我有这个:

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

# languages

config.i18n.default_locale = :fr 

如何避免日期时间更新?

编辑:

使用的版本:

我找到了一个 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.rbproduction.rb 文件中配置时区,并且您必须在部署中预编译资产