Sha256: 4149ca4675349026d59cb5e094a90a4995604e2336e599d9d7b68b0857cf5540
Contents?: true
Size: 1.07 KB
Versions: 4
Compression:
Stored size: 1.07 KB
Contents
module Spree module Scopes # This module is extended by ProductScope module Dynamic module_function # Sample dynamic scope generating from set of products # generates 0 or (2..scope_limit) scopes for prices, based # on number of products (uses Math.log, to guess number of scopes) def price_scopes_for(products, scope_limit=5) scopes = [] # Price based scopes all_prices = products.pluck(:price).sort ranges = [Math.log(products.length).floor, scope_limit].max if ranges >= 2 l = all_prices.length / ranges scopes << ProductScope.new({:name => "master_price_lte", :arguments => [all_prices[l]] }) (ranges - 2).times do |x| scopes << ProductScope.new({:name => "price_between", :arguments => [ all_prices[l*(x+1)+1], all_prices[l*(x+2)] ] }) end scopes << ProductScope.new({:name => "master_price_gte", :arguments => [all_prices[l*(ranges-1)+1]] }) end scopes end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
spree_core-1.3.5 | lib/spree/scopes/dynamic.rb |
spree_core-1.3.4 | lib/spree/scopes/dynamic.rb |
spree_core-1.3.3 | lib/spree/scopes/dynamic.rb |
spree_core-1.3.2 | lib/spree/scopes/dynamic.rb |