Method: Spree::Variant.suppliable

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

.suppliableActiveRecord::Relation

Returns a scope of Variants which are suppliable. This includes:

  • in_stock variants

  • backorderable variants

  • variants which do not track stock

Returns:

  • (ActiveRecord::Relation)


117
118
119
120
121
122
123
124
125
# File 'app/models/spree/variant.rb', line 117

def self.suppliable
  return all unless Spree::Config.track_inventory_levels
  arel_conditions = [
    arel_table[:track_inventory].eq(false),
    Spree::StockItem.arel_table[:count_on_hand].gt(0),
    Spree::StockItem.arel_table[:backorderable].eq(true)
  ]
  joins(:stock_items).where(arel_conditions.inject(:or))
end