2012-01-25 30 views
3

的舊記錄我試圖在heroku上查找(然後刪除)我數據庫中的所有舊記錄。查找所有返回相同數量大於和小於(><)

對於一些這兩個原因是相等的(注意<和>)

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

讓我hesitent有關使用刪除。

我應該做些什麼來確保我只能得到較早的記錄?

+0

這可能與該做的'count()'函數結束....此外,你確定在30天前以及30天之前沒有相同數量的記錄嗎? – summea

回答

9

不啻是你想要什麼:

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

如果你不確定,打印一些記錄使用p或awesome_print(ap)控制檯。

2

如果你想刪除舊記錄,你要刪除的是較早的日期記錄,即比給定日期(30.days.ago)

+0

確實。唯一的問題是上面列出的兩個呼叫返回相同的號碼。不知道是否重要,我打電話的軌道默認「updated_at」領域,而不是我自己的。 – AdamT

0

爲什麼不將state標誌設置爲pending_delete,而是一旦滿意就可以刪除該狀態下的所有記錄,而不是刪除記錄。

3

您需要與指定where子句:條件,就像這樣:

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

但使用少於.... – DGM

9

其他的答案是正確的,但對於更新ActiveRecord的語法:

Post.where("updated_at < ?", 30.days.ago) 
相關問題