Ruby on rails 在Rails管理中编辑时更新datetime对象
因此,我在Heroku上托管的PostgreSQL DB中有一个Ruby on rails 在Rails管理中编辑时更新datetime对象,ruby-on-rails,timezone,rails-admin,Ruby On Rails,Timezone,Rails Admin,因此,我在Heroku上托管的PostgreSQL DB中有一个餐厅表,其中有两个日期时间列:打开和关闭,表示每个餐厅的日程安排 我使用Rails后端。每次我想编辑一家餐厅,例如更改餐厅的电话号码(注意:不触摸打开或关闭),都会在保存修改后更新打开和关闭,并获得一个多小时的时间。例如,如果某一特定餐厅的开门时间为12:00,而关门时间为14:00,则该时间变为13:00和15:00 同样,在不改变的情况下,我会打开或关闭自己 它可能与我的时区有关:在application.rb中,我有: # t
餐厅
表,其中有两个日期时间
列:打开
和关闭
,表示每个餐厅的日程安排
我使用Rails后端。每次我想编辑一家餐厅,例如更改餐厅的电话号码
(注意:不触摸打开
或关闭
),都会在保存修改后更新打开
和关闭
,并获得一个多小时的时间。例如,如果某一特定餐厅的开门
时间为12:00,而关门
时间为14:00,则该时间变为13:00和15:00
同样,在不改变的情况下,我会打开或关闭自己
它可能与我的时区有关:在application.rb
中,我有:
# timezone
config.time_zone = 'Paris'
config.active_record.default_timezone = :local
# languages
config.i18n.default_locale = :fr
我可以做些什么来避免datetime更新
编辑:
使用的版本:
- 轨道(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
#学分https://gist.github.com/jackdesert/7090731
#rails_admin.rb
需要“rails\u admin/config/fields/base”
模块RailsAdmin
模块配置
模块字段
模块类型
类Datetime
这需要您在staging.rb
和production.rb
文件中配置时区,并且您必须在部署中预编译资产您可以发布Rails和Rails管理版本吗?嗨@DimitriusLachi,我编辑了我的帖子以添加版本:)嗨@DimitriusLachi,使用已删除的解决方案,但将时区设置为伦敦
,而不是巴黎
,似乎可以奏效!这不是一个完美的解决方案,因为我应该能够获得正确的时区并更新我的表,而不会出现这种问题。但是现在应该很好。很好,我转载,答案,我会更新,把这个解释谢谢你的帮助?那么去巴黎的是什么ActiveSupport::TimeZone.new('Europe/Paris')
?根据此更新。告诉我这是否有效:)在我将其添加到我的config/initializers/rails\u admin.rb
中后,我在启动服务器时出错,你是否忘记复制一些“end”?哈哈,我在末尾缺少了一个end
关键字。