我有一个包含Time
数据类型列的表,它存储来自用户的时间(通过f.time_select
表单帮助程序)。当我通过表单输入时间时,它工作正常,但我无法通过带有.create
或.new
的rails irb控制台创建时间对象。消息是:
IRB(主):003:0> Sleep.create(小时:" 1970-01-01 06:15:00") 弃用警告:时间列将成为Rails中的时区 5.1。这仍然会导致
String
被解析,就好像它们在Time.zone
中一样,Time
s要转换为Time.zone
。要保留旧行为,您必须将以下内容添加到您的行为中 初始化:
config.active_record.time_zone_aware_types = [:datetime]
要隐藏此弃用警告,请添加以下内容:
config.active_record.time_zone_aware_types = [:datetime, :time] (called from irb_binding at (irb):3) DEPRECATION WARNING: Time columns
将成为Rails 5.1中的时区。这仍然会导致
String
s 要被解析,好像它们在Time.zone
中,而Time
是 转换为Time.zone
。要保留旧行为,您必须将以下内容添加到您的行为中 初始化:
config.active_record.time_zone_aware_types = [:datetime]
要隐藏此弃用警告,请添加以下内容:
config.active_record.time_zone_aware_types = [:datetime, :time]
我尝试将这些行中的每一行添加到config/application.rb
下的class Application < Rails::Application
,然后尝试使用不同的语法组合来通过irb创建时间,例如Sleep.create(hours: "1970-01-01", "06:20:00")
,但没有任何效果。
我也得到这样的结果:
Loading development environment (Rails 5.0.2)
irb(main):001:0> irb(main):003:0> Sleep.create(hours: "1970-01-01 06:15:00")
SyntaxError: (irb):1: syntax error, unexpected ':', expecting end-of-input
irb(main):003:0> Sleep.create(hours: "19
或
Sleep.create(hours: "1970-01-01", "06:15:00")
irb(main):002:0> Sleep.create(hours: "1970-01-01", "06:15:00")
SyntaxError: (irb):2: syntax error, unexpected ')', expecting =>
urs: "1970-01-01", "06:15:00")
我做错了什么,如何从irb创造一些特定的时间?