Method: Spree::Product#default_variant

Defined in:
app/models/spree/product.rb

#default_variantSpree::Variant

Returns default Variant for Product If track_inventory_levels is enabled it will try to find the first Variant in stock or backorderable, if there’s none it will return first Variant sorted by position attribute If track_inventory_levels is disabled it will return first Variant sorted by position attribute

Returns:



331
332
333
334
335
336
337
# File 'app/models/spree/product.rb', line 331

def default_variant
  @default_variant ||= if Spree::Config[:track_inventory_levels] && has_variants? && available_variant = variants.detect(&:purchasable?)
                         available_variant
                       else
                         has_variants? ? variants.first : find_or_build_master
                       end
end