Sha256: 30b77afca5cda065abd1ce4af3af188a19a5ac749e78caee2103d915b8b27303

Contents?: true

Size: 717 Bytes

Versions: 7

Compression:

Stored size: 717 Bytes

Contents

class Cart < ActiveRecord::Base
  has_many :cart_items, :dependent => :destroy do
    def in_cart(variant)
      find :first, :conditions => ['variant_id = ?', variant.id]
    end
  end
  has_many :products, :through => :cart_items

  def total
    cart_items.inject(0) {|sum, n| n.price * n.quantity + sum}
  end
  
  def add_variant(variant, quantity=1)
    current_item = cart_items.in_cart(variant)
    if current_item
      current_item.increment_quantity unless quantity > 1
      current_item.quantity = (current_item.quantity + quantity) if quantity > 1
    else
      current_item = CartItem.new(:quantity => quantity, :variant => variant)
      cart_items << current_item
    end
    current_item
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spree-0.0.8 starter-app/vendor/plugins/spree/app/models/cart.rb
spree-0.0.9 app/models/cart.rb
spree-0.2.0 app/models/cart.rb
spree-0.4.1 app/models/cart.rb
spree-0.4.0 app/models/cart.rb
spree-0.5.0 app/models/cart.rb
spree-0.5.1 app/models/cart.rb