class Stall::ProductFilters::Builder
Attributes
options[R]
products[R]
Public Class Methods
new(products, options = {})
click to toggle source
# File lib/stall/product_filters/builder.rb, line 6 def initialize(products, options = {}) @products = products @options = options end
Public Instance Methods
category_filter()
click to toggle source
# File lib/stall/product_filters/builder.rb, line 15 def category_filter CategoryFilter.new(products, options_for(:category)) if enabled?(:category) end
filters()
click to toggle source
# File lib/stall/product_filters/builder.rb, line 11 def filters [category_filter, manufacturer_filter, price_filter] + properties_filters end
manufacturer_filter()
click to toggle source
# File lib/stall/product_filters/builder.rb, line 19 def manufacturer_filter ManufacturerFilter.new(products, options_for(:manufacturer)) if enabled?(:manufacturer) end
price_filter()
click to toggle source
# File lib/stall/product_filters/builder.rb, line 23 def price_filter PriceFilter.new(products, options_for(:price)) if enabled?(:price) end
properties_filters()
click to toggle source
# File lib/stall/product_filters/builder.rb, line 27 def properties_filters if enabled?(:property) properties.map do |property| property_options = options_for(:property, property: property) PropertyFilter.new(products, property_options) end else [] end end
Private Instance Methods
enabled?(filter_name)
click to toggle source
# File lib/stall/product_filters/builder.rb, line 54 def enabled?(filter_name) options[filter_name] != false end
options_for(filter_name, overrides = {})
click to toggle source
# File lib/stall/product_filters/builder.rb, line 50 def options_for(filter_name, overrides = {}) (options[filter_name] || {}).deep_dup.merge(overrides) end
properties()
click to toggle source
# File lib/stall/product_filters/builder.rb, line 40 def properties Property.joins( property_values: [ variant_property_values: [:variant] ] ) .includes(:property_values) .distinct end