日期与 ActiveSupport::TimeWithZone 的比较失败

2023-12-24

我有一个age方法在我的Waiver模型看起来像:

  def age(date = nil)

    if date.nil?
      date = Date.today
    end
    age = 0
    unless date_of_birth.nil?
      age = date.year - date_of_birth.year
      age -= 1 if date < date_of_birth + age.years #for days before birthday
    end
    return age
  end

然后我有一个看起来像这样的规范:

it "calculates the proper age" do
 waiver = FactoryGirl.create(:waiver, date_of_birth: 12.years.ago)
 waiver.age.should == 12
end

当我运行这个规范时我得到comparison of Date with ActiveSupport::TimeWithZone failed。我究竟做错了什么?

Failures:

  1) Waiver calculates the proper age
     Failure/Error: waiver.age.should == 12
     ArgumentError:
       comparison of Date with ActiveSupport::TimeWithZone failed
     # ./app/models/waiver.rb:132:in `<'
     # ./app/models/waiver.rb:132:in `age'
     # ./spec/models/waiver_spec.rb:23:in `block (2 levels) in <top (required)>'

您正在比较一个实例Date与一个实例ActiveSupport::TimeWithZone在表达式中date < date_of_birth + age.years; ActiveSupport::TimeWithZone 是,根据文档 http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html,一个类似 Time 的类,可以表示任何时区的时间。你根本无法比较Date and Time对象而不执行某种转换。尝试Date.today < Time.now在控制台上;你会看到类似的错误。

表达如12.years.ago典型的 ActiveRecord 时间戳是 ActiveSupport::TimeWithZone 的实例。你最好确保你只处理Time物体或Date对象,但不能同时出现在该方法中。为了使比较是最新的,表达式可以写成:

age -= 1 if date < (date_of_birth + age.years).to_date
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

日期与 ActiveSupport::TimeWithZone 的比较失败 的相关文章

随机推荐

  • 为 CLR 实现函数式语言(或者,关于 F# 实现的论文)

    有谁知道有关 F 编译器实现的任何好论文吗 我正在尝试为针对 CLR 的简单函数式语言生成 CIL 代码 但我在几个方面遇到了困难 函数式语言和 CIL 之间的差异使得生成类型正确的 CIL 代码变得困难 我有通过类型擦除来工作的解决方案
  • Crashlytics 上传 Android 原生库的符号成功,但 Firebase 控制台中没有显示任何符号?

    我正在尝试在 Android 应用程序中上传外部本机库的本机符号 所有设置和 crashlyticsUploadSymbolsRelease 似乎都成功了 我检查了 crashlytics log 它说 cSYM 文件正在生成并上传到htt
  • Azure 应用服务:使用性能计数器

    我正在尝试设置我的 Azure Web 应用程序以包含第三方软件的使用 这似乎需要访问 PerformanceCounters 在本地 这工作正常 但是当我在 Azure 中运行它时 出现以下错误 UnauthorizedAccessExc
  • 如何在python中读取pdf文件而不在unix中转换它? [复制]

    这个问题在这里已经有答案了 pdfile open tutorial pdf r xyz pdfile readlines pqr pdfile readline for a in xyz print a 该代码不显示实际内容 相反 它显示
  • 在准备好的语句上使用 fetch_assoc

    我目前正在编写登录脚本 我得到了以下代码 selectUser db gt prepare SELECT id password salt FROM users WHERE username selectUser gt bind param
  • git 网站更新策略 - 如何同步开发和实时存储库?

    以下是我构建 git 支持的网站更新和备份策略的方式 我可以通过 SSH 访问托管该网站的 Linux VPS 这是我所做的 1 在网站服务器上 在正确的网站文件夹 公共根之前的一级 创建了一个 git 存储库 cd path to web
  • Powershell复制文件或获取内容而不锁定它

    我们有一些预定的脚本 他们必须访问带有点源函数的文件 Functions ps1 此 Functions ps1 位于共享上 因为 ExecutionPolicy 我无法像这样加载文件 share folder Functions ps1
  • 使用 NSTimer 显示像汽油泵表一样动画的秒表计时器

    我是iOS开发新手 当我按下秒表开始按钮时 我想显示计时器 如计数器令牌效果 我附上了图像供您参考 我已经完成了显示秒和分钟 但我不知道 如何动画自动滚动效果 我怎样才能做到这一点 When the counter is moving it
  • Swift DidSelectRowAt 未触发

    我有一个项目 有几个不同的 VC 其中两个有 TableViews 第一个工作得很好 我在那里有一个自定义视图等 第二个也是自定义的 它填充了很好的信息 但与第一个不同 我无法点击它来继续下一个 VC 我已正确设置委托和数据源 我的项目中有
  • 在 ASP.NET 开发服务器下运行时,WebForms 中的 ASP.NET 路由不处理非 ASP 扩展

    我在 Visual Studio 2010 下创建了一个默认网站 在 Global asax 中添加了一个简单的路由 routes MapPageRoute AboutRoute about About aspx 当我启动时显示404ASP
  • glGenerateMipmap - 非 2 的幂

    环境 Ubuntu 17 04 Chrome 60 在本地运行此示例 不会出现警告 错误 https github com mdn webgl examples tree gh pages tutorial sample6 https gi
  • 如何使用 Google Cast SDK 3 添加自定义 SessionProvider

    我们最近将 Google Cast SDK 更新至版本 3 使用此 SDK 应该可以通过在期权提供者 https developers google com android reference com google android gms
  • 批量插入到特定列?

    我想将 csv 文件的列批量插入到目标表的特定列 描述 目标表的列数比我的 csv 文件多 因此 我希望使用 BULK INSERT 将 csv 文件列转到正确的目标列 这可能吗 如果是 那么我该怎么做 我在 上看到了教程和代码http b
  • 在 Unix 中如何找到当前日期减去 7 天?

    我正在尝试查找今天 7 天前的日期 CURRENT DT date F T diff CURRENT DT 7 echo diff 我正在尝试类似上述的方法来查找距离当前日期还少的 7 天 有人可以帮我吗 GNU date将为您计算数学 d
  • 如何使 UIView 动画过渡反向卷曲?

    我正在开发允许在某些情况下翻转界面的应用程序 应支持两种横向方向 横向左和右 设备翻转和方向更改工作正常 但是 在横向模式下 应用程序允许使用 UIViewAnimationTransitionCurlUp 效果转到另一个屏幕 然后使用 U
  • Python Tornado Websocket 连接关闭后仍然打开

    我有一个 Tornado Websocket 服务器 我想在 30 分钟不活动后超时 我用self close 30 分钟不活动后关闭连接 但似乎有些连接即使在关闭后仍保持打开状态 这是代码的基本部分 从这里获得帮助后实现 如何在 Torn
  • 作品中是否有 api order_by/sort 参数?

    如果可以在 api 查询字符串中传递 order by 和 sort 参数 那将非常有帮助 order by 应接受以下选项 距离 签到 姓名 sort 应接受以下选项 asc 描述 在将结果集缩小到返回的最大 50 个结果之前 匹配的结果
  • Spring Jndi 配置,Server.xml

    我在使用 Spring 设置 JNDI 配置时遇到问题 我检查了其他帖子 但无法解决我的问题 我使用 Tomcat 6 作为容器 根据我的理解 我需要在服务器上设置资源 所以在我的server xml文件我有这个
  • 在 R 中格式化 html 表

    我想改善外观html我使用包在 R 中生成的表xtable library xtable html table xtable
  • 日期与 ActiveSupport::TimeWithZone 的比较失败

    我有一个age方法在我的Waiver模型看起来像 def age date nil if date nil date Date today end age 0 unless date of birth nil age date year d