如何从Rails控制台创建特定时间?

时间:2017-04-26 19:22:05

标签: ruby-on-rails time timezone ruby-on-rails-5

我有一个包含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创造一些特定的时间?

0 个答案:

没有答案