所以我在Heroku上托管的PostgreSQL数据库中有一个Restaurant
表,其中有两datetime
列:opens
和closes
代表每家餐厅的时间表。
Admin 与我的 Rails 后端一起使用。每次我想编辑餐厅时,例如更改餐厅的phone_number
(注意:不接触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)
我找到了一个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
文件中的配置时区,并且必须在部署中预编译资产