Module: SolidusConfigurableKits::Spree::ProductDecorator

Defined in:
app/decorators/models/solidus_configurable_kits/spree/product_decorator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/decorators/models/solidus_configurable_kits/spree/product_decorator.rb', line 6

def self.prepended(base)
  base.has_many :kit_requirements,
    class_name: "SolidusConfigurableKits::Requirement",
    foreign_key: :product_id
  base.has_many :kits, through: :kit_requirements, source: :product
  base.has_many :required_kit_products, through: :kit_requirements, source: :required_product
  base.delegate :resilient_money_price, to: :master

  base.scope :with_kit_item_prices, -> {
    joins(variants_including_master: :prices).where(spree_prices: { kit_item: true }).distinct
  }
end

Instance Method Details

#kit_item_variants_for(pricing_options = Spree::Config.default_pricing_options) ⇒ Array<Spree::Variant>

Returns all variants that can be part of a kit.

Parameters:

  • pricing_options (Spree::Variant::PricingOptions) (defaults to: Spree::Config.default_pricing_options)

    the pricing options to search for, default: the default pricing options

Returns:

  • (Array<Spree::Variant>)

    all variants that can be part of a kit



22
23
24
25
26
# File 'app/decorators/models/solidus_configurable_kits/spree/product_decorator.rb', line 22

def kit_item_variants_for(pricing_options = Spree::Config.default_pricing_options)
  variants_including_master.includes(:option_values).with_prices(pricing_options).select do |variant|
    variant.option_values.any? || (variant.is_master? && variants.none? )
  end
end