ruby-on-rails - 我可以告诉 activerecord 在访问时不要将 "datetime"数据转换为对象吗?

标签 ruby-on-rails datetime activerecord

我有一些代码可以简单地访问日期时间字段,因此当我阅读它时,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/

相关文章:

javascript - 如何在moment js中将纪元时间戳转换为带时区的日期时间?

mysql - 在同一个 Rails 应用程序中同时使用 mongodb 和 mysql 是否有意义?

ruby-on-rails - 如何在 minitest 中模拟和验证 ActionCable 传输?

c# - 从 Excel 工作表解析日期时间

sql - SSIS 2008 脚本组件 DT_TIMESTAMP 到日期时间

ruby-on-rails - 多态关联的 Rails_admin 配置

ruby-on-rails - 如何重用命名范围?

ruby-on-rails - Rails 3 迁移 : Adding reference column?

ruby-on-rails - 未使用 Ruby Rails 最新版本

ruby-on-rails - `/home/webapp` 不是目录 - Elastic Beanstalk (RAILS)