【问题标题】:Find all old records returning same amount for greater than and less than (> <)查找所有返回相同数量大于和小于 (> <) 的旧记录
【发布时间】:2012-02-19 01:24:18
【问题描述】:

我正在尝试在 heroku 上的数据库中查找(然后删除)所有旧记录。

由于某种原因,这两个是相等的(注意 )

Post.find(:all, "updated_at > ?", 30.days.ago).count
Post.find(:all, "updated_at < ?", 30.days.ago).count

让我对使用删除犹豫不决。

我应该打什么电话来确保我只得到较旧的记录?

【问题讨论】:

  • 这可能与末尾的 count() 函数有关....另外,您确定您在 30 天前没有相同数量的记录以及30 天前之后?

标签: ruby-on-rails ruby database heroku


【解决方案1】:

其他答案是正确的,但是对于更新的 ActiveRecord 语法:

Post.where("updated_at < ?", 30.days.ago)

【讨论】:

    【解决方案2】:

    小于你想要的:

    Post.find(:all, :conditions => ["updated_at < ?", 30.days.ago])
    

    如果您不确定,请使用p 或 awesome_print (ap) 将一些记录打印到控制台。

    【讨论】:

      【解决方案3】:

      您需要使用 :conditions 指定 where 子句,如下所示:

      Post.all(:conditions => ["updated_at < ?", 30.days.ago])
      

      【讨论】:

        【解决方案4】:

        如果要删除旧记录,则要删除日期更早的记录,即小于给定日期(30.days.ago)

        【讨论】:

        • 确实如此。唯一的问题是上面列出的两个调用都返回相同的数字。想知道我调用 rails 默认的“updated_at”字段而不是我自己的字段是否重要。
        【解决方案5】:

        与其删除记录,不如将state 标志设置为pending_delete,然后一旦您满意就可以删除该状态下的所有记录。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-09
          • 1970-01-01
          • 1970-01-01
          • 2015-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多