在Rails Admin中编辑时更新了datetime对象

时间:2019-01-17 11:22:18

标签: ruby-on-rails timezone rails-admin

因此,我在Heroku上托管的PostgreSQL数据库中有一个Restaurant表,其中有两个datetime列:openscloses代表了每个时间表餐厅。

我在Rails后端使用Rails Admin。每次我想编辑餐厅时,例如要更改餐厅的phone_number NB:无需触摸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 

如何避免日期时间更新?

编辑:

使用的版本:

  • 导轨(5.1.6)
  • rails_admin(1.4.2)

1 个答案:

答案 0 :(得分:1)

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