Sha256: 48793a8cadc664a064ba3b352b91da4d129a7f8d8ce154100e5c5903edd89749

Contents?: true

Size: 1.16 KB

Versions: 11

Compression:

Stored size: 1.16 KB

Contents

module ActiveRecord
  module Acts #:nodoc:
    module MuckCart #:nodoc:
      def self.included(base)
        base.extend(ClassMethods)
      end

      module ClassMethods

        def acts_as_muck_cart(options = {})
          include MuckCommerce::CurrencyMethods
          include MuckCommerce::DiscountMethods
          
          belongs_to :cartable, :polymorphic => true

          has_many :cart_coupons
          has_many :coupons, :through => :cart_coupons

          include ActiveRecord::Acts::MuckCart::InstanceMethods
          extend ActiveRecord::Acts::MuckCart::SingletonMethods
        end

      end

      # class methods
      module SingletonMethods

      end

      # All the methods available to a record that has had <tt>acts_as_muck_cart</tt> specified.
      module InstanceMethods
        
        def empty?
          self.items.empty?
        end

        def before_create
          generate_token
        end

        def generate_token
          self.token = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{self.id}--")
        end

        # Override this method in your cart
        def items
          []
        end

      end
      
    end

  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
muck-commerce-0.2.8 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.7 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.6 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.5 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.4 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.3 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.2 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.1 lib/active_record/acts/muck_cart.rb
muck-commerce-0.2.0 lib/active_record/acts/muck_cart.rb
muck-commerce-0.1.9 lib/active_record/acts/muck_cart.rb
muck-commerce-0.1.8 lib/active_record/acts/muck_cart.rb