Class: Spree::Calculator
- Includes:
- Preferences::Persistable
- Defined in:
- app/models/spree/calculator.rb
Direct Known Subclasses
DefaultTax, FlatFee, FlatRate, ReturnsCalculator, ShippingCalculator
Defined Under Namespace
Modules: Returns, Shipping Classes: DefaultTax, FlatFee, FlatRate
Class Method Summary collapse
-
.description ⇒ String
A description for this calculator in few words.
Instance Method Summary collapse
- #available?(_object) ⇒ Boolean
-
#compute(computable) ⇒ Object
This method calls a compute_<computable> method.
- #description ⇒ Object
- #to_s ⇒ Object
Methods inherited from Base
Methods included from Spree::Core::Permalinks
#generate_permalink, #save_permalink
Class Method Details
.description ⇒ String
A description for this calculator in few words
28 29 30 |
# File 'app/models/spree/calculator.rb', line 28 def self.description model_name.human end |
Instance Method Details
#available?(_object) ⇒ Boolean
42 43 44 |
# File 'app/models/spree/calculator.rb', line 42 def available?(_object) true end |
#compute(computable) ⇒ Object
This method calls a compute_<computable> method. must be overriden in concrete calculator.
It should return amount computed based on #calculable and the computable parameter
14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/models/spree/calculator.rb', line 14 def compute(computable) # Spree::LineItem -> :compute_line_item computable_name = computable.class.name.demodulize.underscore method_name = "compute_#{computable_name}".to_sym calculator_class = self.class if respond_to?(method_name) send(method_name, computable) else raise NotImplementedError, "Please implement '#{method_name}(#{computable_name})' in your calculator: #{calculator_class.name}" end end |
#description ⇒ Object
38 39 40 |
# File 'app/models/spree/calculator.rb', line 38 def description self.class.description end |
#to_s ⇒ Object
34 35 36 |
# File 'app/models/spree/calculator.rb', line 34 def to_s self.class.name.titleize.gsub("Calculator\/", "") end |