Ruby on rails 如何查找10分钟前创建但不少于10分钟的记录

Ruby on rails 如何查找10分钟前创建但不少于10分钟的记录,ruby-on-rails,Ruby On Rails,我正在构建一个Rails 5应用程序,我想检查在过去10分钟内完成的otype update_产品是否有活动 我试过了,但出现了一个错误 start_date = DateTime.now end_date = DateTime.now - 10.minutes Activity.where("otype = ? AND sku = ? AND created_at < ?", 'update_product', '8888', start_date..end_date

我正在构建一个Rails 5应用程序,我想检查在过去10分钟内完成的otype update_产品是否有活动

我试过了,但出现了一个错误

start_date = DateTime.now
end_date = DateTime.now - 10.minutes
Activity.where("otype = ? AND sku = ? AND created_at < ?", 'update_product', '8888', start_date..end_date)
我也尝试过这个,但得到了所有超过10分钟的信息,但我只想检查是否有0到10分钟前进行的活动

Activity.where("otype = ? AND sku = ? AND created_at < ?", 'create_product', output['variants'][0]['sku'], 10.minutes.ago)
因此,我要查找的是确保不存在10分钟前创建的匹配活动记录。

如果查询只是查看是否至少有一条记录并返回布尔值,则可以使用:

Activity.where("otype = ? AND sku = ? AND created_at < ?", 'create_product', output['variants'][0]['sku'], 10.minutes.ago)
Activity.where(otype: 'update_product').where('created_at <= ?', 10.minutes.ago).exists?
要根据创建的列(恰好是时间戳数据类型)筛选行,可以使用ActiveRecord也使用>=解释的范围:

注意,Ruby 2.7刚刚添加了无beginless范围

Activity.where(otype: 'update_product', created_at: ..5.minutes.ago).exists?
# SELECT 1 AS one
# FROM "activities"
# WHERE "activities"."otype" = $1
# AND "activities"."created_at" <= $2
# LIMIT $3  [["otype", "update_product"], ["created_at", "2020-07-01 09:09:09.031745"], ["LIMIT", 1]]