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
感谢您的帮助/建议。我会尽力通过更新,希望能帮助某些人。