【发布时间】:2011-04-01 11:49:24
【问题描述】:
我尝试使用 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?'
【问题讨论】:
标签: mysql ruby-on-rails ruby windows datetime