如何检查 last_updated 是否大于 15.minutes.ago?

How to check if last_updated more than 15.minutes.ago?

这应该很简单,但我遇到了一些似乎失败的边缘案例,我做错了什么,这让我有点困惑。我有这样的方法:

def self.needs_updating?(last_updated_time, time_since_update)
  return false if last_updated_time.nil?
  time_since_update < last_updated_time
end

使用以下语法调用它:

Tools::Utils.needs_updating?(@entry.updated_at, 15.minutes.ago)

我想做的是发现@entry 是否已至少更新 15.minutes.ago。如果已更新 20.minutes.ago,则应 return 为真,如果已更新 1.minute.ago,则应 return 为假。

我想我可能需要在其中插入 DateTime.now.utc。但是我该怎么做才能继续使用 Rails 习语(14.minutes.ago、1.hour.ago 等)?

谢谢!

应该是

def self.needs_updating?(last_updated_time, time_since_update)
  return false if last_updated_time.nil?
  last_updated_time < time_since_update
end

如果您想要 UTC 时间,请使用 last_updated_time.utc < time_since_update.utc

如果你想要本地时间,请使用 last_updated_time.localtime < time_since_update.localtime

例子

last_updated_time = @entry.updated_at
=> 2022-05-11 22:30:11 +0200

time_since_update = 15.minutes.ago
=> 2022-05-12 22:35:15 +0200

last_updated_time < time_since_update
=> true