我正在尝试在heroku上查找(然后删除)我的数据库中的所有旧记录。
出于某种原因,这两者是相同的(注意<和>)
Post.find(:all, "updated_at > ?", 30.days.ago).count
Post.find(:all, "updated_at < ?", 30.days.ago).count
让我关注使用删除。
我应该拨打什么电话来确保我只获得较旧的记录?
答案 0 :(得分:12)
其他答案是正确的,但是对于更新的ActiveRecord语法:
Post.where("updated_at < ?", 30.days.ago)
答案 1 :(得分:11)
少于你想要的东西:
Post.find(:all, :conditions => ["updated_at < ?", 30.days.ago])
如果您不确定,请使用p
或awesome_print(ap
)将部分记录打印到控制台。
答案 2 :(得分:3)
您需要使用:conditions指定where子句,如下所示:
Post.all(:conditions => ["updated_at < ?", 30.days.ago])
答案 3 :(得分:2)
如果要删除旧记录,则要删除具有较早日期的记录,即 less 比给定日期(30.days.ago)
答案 4 :(得分:0)
为什么不将state
标志设置为pending_delete
而不是删除记录,然后一旦您满意,就可以删除该状态下的所有记录。