我有一些代码可以简单地访问日期时间字段,因此当我阅读它时,activerecord 会自动将其转换为时间对象:
@some_appointment.some_time
问题是有时“some_time”日期时间列有错误的数据。 “0209-12-20”而不是“2009-12-20”。这导致 Ruby 在访问时抛出“年份太大而无法编码”错误,我似乎无法捕捉到它,因为该错误不是异常。鉴于我的数据库中有一些无效数据,我想尝试通过读取日期时间字符串并使用 Time.parse 来尝试自己制作时间对象,以便在无法解析时间时捕获异常。我怎样才能做到这一点?有没有更好的办法?
最佳答案
你可以试试 attribute_for_inspect
,如:
SomeModel.find(:first).attribute_for_inspect 'some_time'
#=> ""2009-02-23 23:15:24""
您也可以考虑只编写一个独立的脚本,该脚本不使用 activerecord 遍历数据库中的数据以对其进行规范化或其他操作。这可能比将不良数据的特殊情况编码到您的应用程序中要快。
关于ruby-on-rails - 我可以告诉 activerecord 在访问时不要将 "datetime"数据转换为对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2003285/