比较 Rails 中的时间(不带秒)

alm*_*lmo 1 ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

在我的 Rails 5 应用程序中,我想在数据库中的某个日期时间后 10 分钟发送警报。例如,created_at 日期时间后 10 分钟。

因此,我每 1 分钟运行一次 cronjob,并且必须在数据库中查找 10 分钟前 create_at 的所有记录。

我的created_at字段的格式为2017-06-01 12:00:00。如何获取 10 分钟前created_at 的所有记录?

我的问题是秒,我不能简单地做到(这不是有效的 Ruby 代码,它只是为了表明我的观点):

where created_at == 10.minutes.ago
Run Code Online (Sandbox Code Playgroud)

我必须做类似的事情

where created_at > 10.minutes.ago AND created_at < 9.minutes.ago
Run Code Online (Sandbox Code Playgroud)

但这看起来不太干净。有更好的解决方案吗?

Md.*_*mon 7

您必须提供范围才能获取记录。但是,为了避免与秒的依赖关系,您可以优雅地执行如下操作。

range = range = 10.minutes.ago.beginning_of_minute..10.minutes.ago.end_of_minute
records = YourModel.where(created_at: range)
Run Code Online (Sandbox Code Playgroud)