Class: Spree::Promotion::Rules::OptionValue

Inherits:
Spree::PromotionRule show all
Defined in:
app/models/spree/promotion/rules/option_value.rb

Constant Summary collapse

MATCH_POLICIES =
%w(any)

Instance Method Summary collapse

Methods inherited from Spree::PromotionRule

#eligibility_errors, for, #human_description, #human_name, #key

Instance Method Details

#actionable?(line_item) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
# File 'app/models/spree/promotion/rules/option_value.rb', line 22

def actionable?(line_item)
  option_value_variant_ids = line_item.variant.option_value_variant_ids.map(&:to_s)
  (preferred_eligible_values & option_value_variant_ids).any?
end

#applicable?(promotable) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
# File 'app/models/spree/promotion/rules/option_value.rb', line 11

def applicable?(promotable)
  promotable.is_a?(Spree::Order)
end

#eligible?(promotable, _options = {}) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
# File 'app/models/spree/promotion/rules/option_value.rb', line 15

def eligible?(promotable, _options = {})
  case preferred_match_policy
  when 'any'
    promotable.line_items.any? { |item| actionable?(item) }
  end
end