2017-06-06 18 views
0

私のRails 5アプリケーションでは、データベース内の特定の日時の10分後にアラートを送信したいと思います。たとえば、created_atの日時の10分後です。秒間のRails時間の比較

私は1分ごとにcronjobを実行し、created_atが10分前のすべてのレコードをデータベースで調べなければなりません。

私のcreated_atフィールドの形式は、2017-06-01 12:00:00です。 created_atが10分前のすべてのレコードを取得するにはどうすればよいですか?

私の問題は秒であり、私は、単純なDO(これが有効なRubyのコードではありません、それはちょうど私のポイントを示すために、だ)することはできません:

where created_at == 10.minutes.ago 

私は

where created_at > 10.minutes.ago AND created_at < 9.minutes.ago 
ような何かをしなければならないでしょう

これは非常にきれいに見えません。より良い解決策はありますか?あなたは秒で依存関係を避けるために、records..howeverを得るために範囲を提供する必要が

+3

うん、あなたの範囲のクエリは、私には完全に正常に見えます。 –

答えて

0

、あなたは優雅に下記のような何かを行うことができます。..

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

これは良いですね。範囲の2つの境界を含むか除外するかはわかりますか?それに応じて、end_of_minuteを使用する必要があります。 – almo

+0

'begin_of_minute'は秒の値を' 0'に、 'end_of_minute'を' 59'に設定します。どちらもそれらの値を含みます... –

+0

".."は> created_at>または> created_at > =または> = created_at> =。分かりますか?私はレコードが以下の2つの範囲に含まれることを避けなければならない。 – almo