如何检查last_updated是否超过15分钟.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分钟。如果已经更新了20分钟。如果它已经更新了1分钟,这应该返回true。之前,它应该返回false。

我想我可能需要在那里插入DateTime.now.utc。但是我怎样才能做到这一点,以便我可以继续使用Rails习语(14分钟)。前,1.小时。) ?

谢谢!

应该是

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

最新更新