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:



24
25
26
27
28
# File 'app/models/spree/promotion/rules/option_value.rb', line 24

def actionable?(line_item)
  return false if eligible_option_value_variant_ids.empty?

  Spree::OptionValueVariant.where(id: eligible_option_value_variant_ids, variant_id: line_item.variant_id).exists?
end

#applicable?(promotable) ⇒ Boolean

Returns:



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:



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

def eligible?(promotable, _options = {})
  return false if eligible_option_value_variant_ids.empty?

  case preferred_match_policy
  when 'any'
    Spree::OptionValueVariant.where(id: eligible_option_value_variant_ids, variant_id: promotable.variant_ids).exists?
  end
end