我正在使用遗留数据库,该数据库不使用很好的约定,但我无法更改任何架构。
出现的一个问题是,对于某些时间字段,值大于24小时,如:33:06:46
。这给了我一个:ArgumentError: argument out of range
这个问题已被问到before,但没有一个令人满意的答案。提问者最终说他使用的是DataMapper,这是我想要避免的。
有没有人对此有任何想法?我是否可以将Rails视为日期时间字段而不是时间字段而不更改实际架构?
谢谢!
Thariq
答案 0 :(得分:1)
不确定这是最好的方式,但是:
ActiveRecord使用ActiveSupport :: TimeZone.parse方法来解析这些值(gems / activesupport - ?。?。?/ lib / active_support / values / time_zone.rb)
这很简单:
def parse(str, now=now)
date_parts = Date._parse(str)
return if date_parts.blank?
time = Time.parse(str, now) rescue DateTime.parse(str)
if date_parts[:offset].nil?
ActiveSupport::TimeWithZone.new(nil, self, time)
else
time.in_time_zone(self)
end
end
因此,您可以根据时间格式修补此方法