Railsプログラムには、Products、Offerings、OfferingProducts、Ordersの4つのデータベースがあります。
サンプル提供:ミディアムキット
ミディアムキットには2つの製品が含まれています(これはOfferingProductデータベースで設定されます)1スモール2ミディアム
顧客は2つのミディアムキットを注文します
このプログラムは、この注文から2つの小と4つの中、および同様の多くの注文を説明する必要があります
商品を再注文できるように、毎週販売されている各商品の数を追跡する在庫システムを設定しようとしています。これを計算するために私は持っています:
def get_trend
product = Product.first
customer_orders =[]
product.offerings.each do |o|
customer_orders = customer_orders + o.orders
end
o=customer_orders.group_by { |t| t.date.beginning_of_week }
y = []
op=self.offering_products;
o.sort.each do |week, orders|
y << orders.map { |o| o.quantity*op.find_by_offering_id(o.offering).quantity }.sum
end
return y
end
これはうまくいくようですが、計算には約20秒かかります。これを速くする方法はありますか?私はほとんどの時間がによってかかることを知っています
y << orders.map { |o| o.quantity*op.find_by_offering_id(o.offering).quantity }.sum
特定の週に注文された製品の数を計算する行。何かご意見は?