【问题标题】:Get Record Created 30 Minutes Ago - Rails获取 30 分钟前创建的记录 - Rails
【发布时间】:2023-03-28 03:34:01
【问题描述】:

我需要从Time.now 获取 30 分钟前创建的记录。我正在使用 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

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    请尝试以下查询:

    # 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')
    

    【讨论】:

    • 这个查询会得到过去 30 分钟内的所有内容,而不是 30 分钟前,对吧?
    • 之前的查询和你说的一样。但我刚刚更新了查询。请检查新的。
    【解决方案2】:

    你可以使用一个范围。

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

    有很多解决方案。

    更多:Rails ActiveRecord date between

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多