gpt4 book ai didi

mysql - 请求日期时间元素时出现 NoMethodError

转载 作者:行者123 更新时间:2023-11-29 09:11:11 26 4
gpt4 key购买 nike

我尝试使用 ruby​​ on Rails 请求数据库中的日期时间条目。这在 Linux 环境中工作得很好,但在我的 Windows 环境中我得到了 NoMethodError。调试时,我发现将日期时间字符串转换为时间时,在 schema_definitions.rb 的第 201 行发生错误

def fast_string_to_time(string)
if string =~ Format::ISO_DATETIME
microsec = ($7.to_f * 1_000_000).to_i <<====== This is line 201
new_time $1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i, microsec
end
end

当我看到 $7 时,我得到了 nil,似乎 $7 没有初始化。在这种情况下,7 美元是多少?我的字符串是

2011-04-01 10:48:57

这是在应包含日期的数组条目上调用验证后的跟踪部分

activerecord (3.0.1) lib/active_record/connection_adapters/abstract/schema_definitions.rb:201:in `fast_string_to_time'
activerecord (3.0.1) lib/active_record/connection_adapters/abstract/schema_definitions.rb:139:in `string_to_time'
activerecord (3.0.1) lib/active_record/connection_adapters/abstract/schema_definitions.rb:78:in `type_cast'
activerecord (3.0.1) lib/active_record/attribute_methods/read.rb:83:in `read_attribute'
activerecord (3.0.1) lib/active_record/base.rb:1558:in `attributes'
activerecord (3.0.1) lib/active_record/base.rb:1558:in `each'
activerecord (3.0.1) lib/active_record/base.rb:1558:in `attributes'
activerecord (3.0.1) lib/active_record/attribute_methods.rb:57:in `attribute_method?'
activemodel (3.0.1) lib/active_model/attribute_methods.rb:394:in `match_attribute_method?'
activemodel (3.0.1) lib/active_model/attribute_methods.rb:393:in `each'
activemodel (3.0.1) lib/active_model/attribute_methods.rb:393:in `match_attribute_method?'
activemodel (3.0.1) lib/active_model/attribute_methods.rb:378:in `respond_to?'
activerecord (3.0.1) lib/active_record/attribute_methods.rb:52:in `respond_to?'
activerecord (3.0.1) lib/active_record/callbacks.rb:268:in `deprecated_callback_method'
activerecord (3.0.1) lib/active_record/validations.rb:57:in `valid?'

最佳答案

Format::ISO_DATETIME 是正则表达式:/\A(\d{4})-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)(.\d+)?\z/

第 7 个捕获是秒的小数部分(例如“.123”),将其转换为 float ,然后转换为微秒。在你的字符串中, $7 将为 nil,但这不是问题,因为 nil.to_f 只是 0.0。尝试在控制台中执行 nil.to_f 以确保获得 0.0。

您确定 NoMethodError 是由该行引起的吗?你能发布回溯吗?

关于mysql - 请求日期时间元素时出现 NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com