获得30分钟前创建的记录 - Rails

时间:2018-01-31 18:46:53

标签: ruby-on-rails ruby

我需要在30分钟前从Time.now获取记录。我正在使用一个cron,我想要一次点燃cron。

我基本上需要这个,除非它应该忽略秒,这样如果Time.now == Wed, 31 Jan 2018 18:00:31 +0000那么created_at = "Wed, 31 Jan 2018 17:30:23 +0000的记录应该匹配。

这是我到目前为止的查询,由于时间评估不当而无效。

Cart.joins(:cart_addresses).group('carts.id').where(created_at: Time.now - 30.minutes).each do |i|
  puts i.id
end

2 个答案:

答案 0 :(得分:2)

请尝试以下查询:

# if current time is 3:00:03
# it will return carts created at 2:30:00 -> 2:30:59
from_mins_ago = 30.minutes.ago.change(sec: 0)
to_mins_ago   = from_mins_ago.change(sec: 59) 
Cart.joins(:cart_addresses).group('carts.id').where(created_at: from_mins_ago..to_min_ago).pluck('carts.id')

答案 1 :(得分:0)

您可以使用范围。

Cart.joins(:cart_addresses).group('carts.id').where(created_at: 30.minutes.ago..DateTime.now)

有很多解决方案。

更多:Rails ActiveRecord date between