Cache DistributorChangeValidator#all_available_distributors, move Enterprise#available_variants into SQLland - massive render speed improvement

This commit is contained in:
Rohan Mitchell
2013-05-20 21:16:43 +10:00
parent f19ef4ed07
commit c3b2f52b7a
3 changed files with 10 additions and 6 deletions

View File

@@ -29,7 +29,7 @@ class Enterprise < ActiveRecord::Base
end end
def available_variants def available_variants
ProductDistribution.find_all_by_distributor_id( self.id ).map{ |pd| pd.product.variants + [pd.product.master] }.flatten Spree::Variant.joins(:product => :product_distributions).where('product_distributions.distributor_id=?', self.id)
end end

View File

@@ -39,7 +39,7 @@ Spree::Order.class_eval do
end end
def line_item_variants def line_item_variants
line_items.map{ |li| li.variant } line_items.map { |li| li.variant }
end end

View File

@@ -11,7 +11,11 @@ class DistributorChangeValidator
def can_change_to_distributor? distributor def can_change_to_distributor? distributor
# Distributor may not be changed once an item has been added to the cart/order, unless all items are available from the specified distributor # Distributor may not be changed once an item has been added to the cart/order, unless all items are available from the specified distributor
@order.line_items.empty? || (available_distributors(Enterprise.all) || []).include?(distributor) @order.line_items.empty? || all_available_distributors.include?(distributor)
end
def all_available_distributors
@all_available_distributors ||= (available_distributors(Enterprise.all) || [])
end end
def available_distributors enterprises def available_distributors enterprises