2017-06-06 42 views
0

在我的Rails 5应用程序中,我想在我的数据库中的特定日期时间10分钟后发送警报。例如在created_at datetime之后10分钟。在没有秒的Rails比较时间

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

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

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

where created_at == 10.minutes.ago 

我会做这样的事情

where created_at > 10.minutes.ago AND created_at < 9.minutes.ago 

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

+3

是的,你的范围查询看起来完全没有给我。 –

回答

0

你必须为了得到records..however提供范围,以避免秒的依赖,你可以这样做下面典雅..

range = range = 10.minutes.ago.beginning_of_minute..10.minutes.ago.end_of_minute 
records = YourModel.where(created_at: range) 
+0

这看起来不错。你知道是否包括或排除范围的两个边界吗?取决于我可能不得不使用end_of_minute。 – almo

+0

'beginning_of_minute'什么都不做,只是将秒的值设置为'0',将'end_of_minute'设置为'59' ..它们都包含那些值... –

+0

问题是如果“..”的意思是> created_at>或> created_at > =或> = created_at> =。你懂我的意思吗?我必须避免将记录包含在以下两个范围内。 – almo