Rails 3.1、Ruby 1.9.2、AR/MySQL。1日あたり多くのレコードのうち1つだけがレールに保持されます。最後に保持する、残りを削除する
同じタイプの結果にその期間中に多くの結果がある場合は、期間(日)ごとに1つの結果のみを保存する方法に関する提案を探しています。たとえば、株価を追跡する例があります。当初は15分ごとに価格を保存していましたが、1つの価格帯ごとに1週間しか保管する必要はありませんでした。最初の1週間後には、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
感謝。私はそれが誰かを助けることを望んでそれを通って作業するように更新しようとします。