Class: Spree::PromotionRule
Overview
Base class for all promotion rules
Direct Known Subclasses
Spree::Promotion::Rules::FirstOrder, Spree::Promotion::Rules::FirstRepeatPurchaseSince, Spree::Promotion::Rules::ItemTotal, Spree::Promotion::Rules::NthOrder, Spree::Promotion::Rules::OneUsePerUser, Spree::Promotion::Rules::OptionValue, Spree::Promotion::Rules::Product, Spree::Promotion::Rules::Store, Spree::Promotion::Rules::Taxon, Spree::Promotion::Rules::User, Spree::Promotion::Rules::UserLoggedIn, Spree::Promotion::Rules::UserRole
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
display_includes
#generate_permalink, #save_permalink
Class Method Details
.for(promotable) ⇒ Object
21
22
23
|
# File 'app/models/spree/promotion_rule.rb', line 21
def self.for(promotable)
all.select { |rule| rule.applicable?(promotable) }
end
|
Instance Method Details
#actionable?(_line_item) ⇒ Boolean
This states if a promotion can be applied to the specified line item It is true by default, but can be overridden by promotion rules to provide conditions
36
37
38
|
# File 'app/models/spree/promotion_rule.rb', line 36
def actionable?(_line_item)
true
end
|
#applicable?(_promotable) ⇒ Boolean
26
27
28
|
# File 'app/models/spree/promotion_rule.rb', line 26
def applicable?(_promotable)
raise NotImplementedError, "applicable? should be implemented in a sub-class of Spree::PromotionRule"
end
|
#eligibility_errors ⇒ Object
40
41
42
|
# File 'app/models/spree/promotion_rule.rb', line 40
def eligibility_errors
@eligibility_errors ||= ActiveModel::Errors.new(self)
end
|
#eligible?(_promotable, _options = {}) ⇒ Boolean
30
31
32
|
# File 'app/models/spree/promotion_rule.rb', line 30
def eligible?(_promotable, _options = {})
raise NotImplementedError, "eligible? should be implemented in a sub-class of Spree::PromotionRule"
end
|
#preload_relations ⇒ Object
17
18
19
|
# File 'app/models/spree/promotion_rule.rb', line 17
def preload_relations
[]
end
|
#to_partial_path ⇒ Object
44
45
46
|
# File 'app/models/spree/promotion_rule.rb', line 44
def to_partial_path
"spree/admin/promotions/rules/#{model_name.element}"
end
|