Minor speed improvements for group order load.

This commit is contained in:
Benjamin Meichsner 2013-01-26 15:18:35 +01:00
parent 2a66d37c3a
commit 3ab3ff2bc4
2 changed files with 20 additions and 16 deletions

View file

@ -38,7 +38,9 @@ class GroupOrder < ActiveRecord::Base
# load prices and other stuff....
data[:order_articles] = {}
order.order_articles.each do |order_article|
#order.order_articles.each do |order_article|
order.articles_grouped_by_category.each do |article_category, order_articles|
order_articles.each do |order_article|
data[:order_articles][order_article.id] = {
:price => order_article.article.fc_price,
:unit => order_article.article.unit_quantity,
@ -53,6 +55,7 @@ class GroupOrder < ActiveRecord::Base
:quantity_available => (order.stockit? ? order_article.article.quantity_available : 0)
}
end
end
data
end

View file

@ -85,7 +85,8 @@ class Order < ActiveRecord::Base
# The array has the following form:
# e.g: [["drugs",[teethpaste, toiletpaper]], ["fruits" => [apple, banana, lemon]]]
def articles_grouped_by_category
order_articles.includes([:article_price, :group_order_articles, :article => :article_category]).
@articles_grouped_by_category ||= order_articles.
includes([:article_price, :group_order_articles, :article => :article_category]).
order('articles.name').
group_by { |a| a.article.article_category.name }.
sort { |a, b| a[0] <=> b[0] }