如何解决如何更改Rails中Active Record的默认时区?
| 在我的application.rb
中,我遇到了以下评论
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run \"rake -D time\" for a list of tasks for finding time zone names. Default is UTC.
config.time_zone = \'Eastern Time (US & Canada)\'
从上面可以看到,我到EST的时间是2英镑。但是,即使在数据库中创建记录时,看起来还是以UTC格式存储了“ 3”。
在上面的评论中,他们说
...并使Active Record自动转换为该区域...
我该怎么办?在哪里?
另外,我也会在heroku上部署它,并且我希望设置可以继续使用
解决方法
在following0ѭ作品中添加以下内容
config.time_zone = \'Eastern Time (US & Canada)\'
config.active_record.default_timezone = :local # Or :utc
,我决定编译此答案,因为其他所有答案似乎都不完整。
config.active_record.default_timezone确定从数据库中提取日期和时间时是使用Time.local(如果设置为:local)还是Time.utc(如果设置为:utc)。默认值为:utc。
http://guides.rubyonrails.org/configuring.html
如果要更改Rails时区,但继续将Active Record保存在UTC中,请使用
# application.rb
config.time_zone = \'Eastern Time (US & Canada)\'
如果要更改Rails时区并在此时区中有Active Record存储时间,请使用
# application.rb
config.time_zone = \'Eastern Time (US & Canada)\'
config.active_record.default_timezone = :local
警告:在以非UTC格式保存时间之前,您确实应该三思而后行,甚至三次。
注意
修改“ 0”后,不要忘记重新启动Rails服务器。
请记住,config.active_record.default_timezone
只能取两个值
:local(转换为config.time_zone
中定义的时区)
:utc(转换为UTC)
这是您如何找到所有可用时区的方法
rake time:zones:all
,在经历了很多痛苦之后,我得出了与院长佩里相同的结论。 config.time_zone = \'Adelaide\'
和config.active_record.default_timezone = :local
是获胜组合。这是我在此过程中发现的。
,以我的情况(第5道)为例,我最后在ѭ14中添加了这两行
config.time_zone = \"Melbourne\"
config.active_record.default_timezone = :local
而已!为了确保正确读取墨尔本,我在终端中运行了命令:
bundle exec rake time:zones:all
而墨尔本正在列出我所在的时区!
,如果要将全局时区设置为UTC,则可以在Rails 4中执行以下操作:
# Inside config/application.rb
config.time_zone = \"UTC\"
config.active_record.default_timezone = :utc
请确保重新启动您的应用程序,否则您将看不到更改。
,在导轨4.2.2上,转到application.rb
并使用config.time_zone=\'city\'
(例如:\'London \'或\'Bucharest \'或\'Amsterdam \'等)。
它应该工作正常。它为我工作。
,我不得不将此块添加到我的environment.rb
文件中,一切正常:)
Rails.application.configure do
config.time_zone = \"Pacific Time (US & Canada)\"
config.active_record.default_timezone = :local
end
我在ѭ22行之前添加了它
,对于中国用户,只需在您的下面加上两行config/application.rb
:
config.active_record.default_timezone = :local
config.time_zone = \'Beijing\'
,在Ruby on Rails 6.0.1中,转到config> locales> application.rb和agrega lo siguiente:
require_relative \'boot\'
require \'rails/all\'
# Require the gems listed in Gemfile,including any gems
# you\'ve limited to :test,:development,or :production.
Bundler.require(*Rails.groups)
module CrudRubyOnRails6
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
config.load_defaults 6.0
config.active_record.default_timezone = :local
config.time_zone = \'Lima\'
# Settings in config/environments/* take precedence over those specified here.
# Application configuration can go into files in config/initializers
# -- all .rb files in that directory are automatically loaded after loading
# the framework and any gems in your application.
end
end
您可以看到我正在用2行配置时区:
config.active_record.default_timezone =: local
config.time_zone = \'Lima\'
我希望它对使用Ruby on Rails 6.0.1的人有所帮助
,如果要设置本地时间,请在“ 0”中添加以下文本
config.time_zone = \'Chennai\'
# WARNING: This changes the way times are stored in the database (not recommended)
config.active_record.default_timezone = :local
然后重新启动服务器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。