Class: Spree::Promotion::Rules::OptionValue
Constant Summary
collapse
- MATCH_POLICIES =
%w(any)
Instance Method Summary
collapse
#preferred_eligible_values
#eligibility_errors, for
Methods inherited from Base
belongs_to_required_by_default, for_store, has_many_inversing, json_api_columns, json_api_permitted_attributes, json_api_type, page, spree_base_scopes, spree_base_uniqueness_scope
#clear_preferences, #default_preferences, #defined_preferences, #deprecated_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_deprecated, #preference_type, #set_preference
Instance Method Details
#actionable?(line_item) ⇒ Boolean
33
34
35
36
37
38
39
40
|
# File 'app/models/spree/promotion/rules/option_value.rb', line 33
def actionable?(line_item)
product_id = line_item.product_id
option_values_ids = line_item.variant.option_value_ids
eligible_product_ids = preferred_eligible_values.keys
eligible_value_ids = preferred_eligible_values[product_id]
eligible_product_ids.include?(product_id) && (eligible_value_ids & option_values_ids).present?
end
|
#applicable?(promotable) ⇒ Boolean
22
23
24
|
# File 'app/models/spree/promotion/rules/option_value.rb', line 22
def applicable?(promotable)
promotable.is_a?(Spree::Order)
end
|
#eligible?(promotable, _options = {}) ⇒ Boolean
26
27
28
29
30
31
|
# File 'app/models/spree/promotion/rules/option_value.rb', line 26
def eligible?(promotable, _options = {})
case preferred_match_policy
when 'any'
promotable.line_items.any? { |item| actionable?(item) }
end
end
|