【发布时间】:2020-09-28 15:04:20
【问题描述】:
使用 Ruby 2.3.2、Rails 5.0.0.1
在 Ruby 控制台中
2.3.2 :001 > date_time_str = "2015-01-08 08:17:15 UTC"
=> "2015-01-08 08:17:15 UTC"
2.3.2 :002 > date_time_range_start = "2015-01-08 08:16:15 UTC"
=> "2015-01-08 08:16:15 UTC"
2.3.2 :003 > date_time_range_end = "2015-01-08 08:20:15 UTC"
=> "2015-01-08 08:20:15 UTC"
2.3.2 :008 > require 'date'
=> true
2.3.2 :009 > date_time_str.between?(DateTime.parse(date_time_range_start), DateTime.parse(date_time_range_end))
ArgumentError: comparison of String with DateTime failed
from (irb):9:in `between?'
from (irb):9
from /home/jignesh/.rvm/rubies/ruby-2.3.2/bin/irb:11:in `<main>'
当我试图将String 实例与DateTime 实例进行比较时,我预计会出现上述行为。但是,当我在 rails 控制台中尝试相同的操作时,它会返回预期结果,如下所示。
在 Rails 控制台中
Loading development environment (Rails 5.0.0.1)
2.3.2 :001 > date_time_str = "2015-01-08 08:17:15 UTC"
=> "2015-01-08 08:17:15 UTC"
2.3.2 :002 > date_time_range_start = "2015-01-08 08:16:15 UTC"
=> "2015-01-08 08:16:15 UTC"
2.3.2 :003 > date_time_range_end = "2015-01-08 08:20:15 UTC"
=> "2015-01-08 08:20:15 UTC"
2.3.2 :004 > date_time_str.between?(DateTime.parse(date_time_range_start), DateTime.parse(date_time_range_end))
=> true
2.3.2 :005 > date_time_str_2 = "2015-01-08 08:21:15 UTC"
=> "2015-01-08 08:21:15 UTC"
2.3.2 :006 > date_time_str_2.between?(DateTime.parse(date_time_range_end), DateTime.parse(r_e))
=> false
谁能帮我理解 Rails 在内部做了什么来完成上述工作?
【问题讨论】:
标签: ruby string datetime ruby-on-rails-5