Sha256: fb44d6dffd2ee4d7d52bfb4cdd0986b2805dab90128c6b612daddb0440cf64dd

Contents?: true

Size: 1.03 KB

Versions: 15

Compression:

Stored size: 1.03 KB

Contents

module Spree
  module Core
    module CalculatedAdjustments
      def self.included(klass)
        klass.class_eval do
          has_one   :calculator, :class_name => "Spree::Calculator", :as => :calculable, :dependent => :destroy
          accepts_nested_attributes_for :calculator
          validates :calculator, :presence => true

          def self.calculators
            spree_calculators.send model_name_without_spree_namespace
          end

          def calculator_type
            calculator.class.to_s if calculator
          end

          def calculator_type=(calculator_type)
            klass = calculator_type.constantize if calculator_type
            self.calculator = klass.new if klass && !self.calculator.is_a?(klass)
          end

          private
          def self.model_name_without_spree_namespace
            self.to_s.tableize.gsub('/', '_').sub('spree_', '')
          end

          def self.spree_calculators
            Rails.application.config.spree.calculators
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
spree_core-2.2.14 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.13 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.12 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.11 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.10 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.9 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.8 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.7 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.6 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.5 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.4 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.3 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.2 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.1 lib/spree/core/calculated_adjustments.rb
spree_core-2.2.0 lib/spree/core/calculated_adjustments.rb