Rails 3.1,Ruby 1.9.2,AR/MySQL。Rails每天只保留多條記錄中的一條。保留最後一個,刪除其餘部分
如果同一類型的結果在該期間有很多結果,我正在尋找如何在每個時間段(一天)只保留一個結果的建議。一個例子可能是追蹤股票價格。最初,我們會每隔15分鐘節省一次價格,但只需要存儲1周內的每個單一價格點。在第一週後,我們每天只需要1個價格(最後一個記錄,收盤價)。
下面是一個簡單的第一次嘗試,做的工作,但非常低效的:提前
# stock has many prices, price has one stock
# get all prices for single stock older than 1 week
prices = stock.prices.where("created_at < ? ", Time.now-1.week)
prices.group_by{ |price| price.created_at.to_date }.each do |k,v| # group by day
if v.count > 1 # if many price points that day
(v[0]..v[v.size-2]).each {|r| r.delete} # delete all but last record in day
end
end
感謝您的幫助/建議。我會盡力通過更新,希望能幫助某些人。