簡體   English   中英

Rails / Active Record“ArgumentError:參數超出范圍” - 表示“時間”字段超過24小時

[英]Rails/Active Record “ArgumentError: argument out of range” - for “time” fields greater than 24 hours

我正在使用遺留數據庫,它不使用很好的約定,但我無法更改任何模式。

出現的一個問題是,對於某些時間字段,值大於24小時,如: 33:06:4633:06:4633:06:46 這給了我一個: ArgumentError: argument out of range

之前已經問這個問題但沒有一個令人滿意的答案。 提問者最終說他使用的是DataMapper,這是我想要避免的。

有沒有人有任何想法來抓住這個? 我可以讓Rails將其視為日期時間字段而不是時間字段而不更改實際架構嗎?

謝謝!

Thariq

但不確定這是最好的方法:

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

因此,您可以為時間格式修補此方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM