2017-06-06 40 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