Sha256: cd7fd03255c3a4289d461fd45a932f2edee6719024026d2f12cab81dbe4d100d

Contents?: true

Size: 908 Bytes

Versions: 1

Compression:

Stored size: 908 Bytes

Contents

module Shopper
  module CurrentOrder
    extend ActiveSupport::Concern

    KEY = :current_order_id

    included do
      helper_method :current_order
    end

    def current_order
      @current_order ||= Shopper::Order.find(get_id)
    rescue ActiveRecord::RecordNotFound
      create_current_order
    end

    def create_current_order
      @current_order = create_order
      set_id(@current_order.id)
      @current_order
    end

    private

    # show_me_the_cookies can`t operate with signed cookies
    def use_signed
      !Rails.env.test?
    end

    def get_id
      use_signed ? cookies.signed[KEY] : cookies[KEY]
    end

    def set_id(id)
      hash = { value: id, expires: Shopper.expires_after.from_now }
      if use_signed
        cookies.signed[KEY] = hash
      else
        cookies[KEY] = hash
      end
    end

    def create_order
      Shopper::Order.create
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoppper-0.1.0 lib/shopper/current_order.rb