Rails 3.1、Ruby 1.9.2、AR/MySQL。
同じタイプの結果がその期間中に多くの結果を持っている場合、期間 (日) ごとに 1 つの結果のみを保持する方法についての提案を探しています。例として、株価の追跡があります。最初は、15 分ごとに価格を保存しますが、すべての価格ポイントを 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
ヘルプ/提案をお寄せいただきありがとうございます。誰かの助けになることを期待して、作業を進めながら更新しようと思います。