3

我的代码中出现了一个非常奇怪的错误,我希望有人可以帮助我。我有一个模型,它有一个 created_at 列和一个我创建的 duration 列。持续时间只是一个整数,假定为小时数。然后我试图将当前时间与 created_at 时间 + 持续时间进行比较,以查看该行是否已过期。我的代码如下所示:

@expire_time = purchase.duration.hours + purchase.created_at
if(@expire_time > Time.current)
  #do some stuff if the current time isn't greater than the expiration time
end

当我在控制台中运行第一行时它工作正常,但是当我保存我的代码并通过它的一部分的路由调用它时,我在该行收到以下错误。

ActiveSupport::TimeWithZone 不能被强制转换为 Fixnum

有没有人对可能是什么问题/我如何正确进行比较有任何想法?

4

2 回答 2

6

我发现了问题...

这不起作用:purchase.duration.hours + purchase.created_at

但这确实:purchase.created_at + purchase.duration.hours

于 2012-10-08T02:44:51.643 回答
0

你刚刚救了我的命(或至少过去两个小时......),谢谢!

DateTime.current + 7.days 效果很好,一周后返回日期时间

7.days + DateTime.current

TypeError(不能将日期时间强制转换为整数)`

于 2021-06-03T14:51:40.853 回答