Class: SpreeCmCommissioner::Variants::FindByOptionValueIds

Inherits:
Object
  • Object
show all
Defined in:
app/finders/spree_cm_commissioner/variants/find_by_option_value_ids.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(product:, option_value_ids:) ⇒ FindByOptionValueIds

Returns a new instance of FindByOptionValueIds.



6
7
8
9
# File 'app/finders/spree_cm_commissioner/variants/find_by_option_value_ids.rb', line 6

def initialize(product:, option_value_ids:)
  @product = product
  @option_value_ids = option_value_ids
end

Instance Attribute Details

#option_value_idsObject (readonly)

Returns the value of attribute option_value_ids.



4
5
6
# File 'app/finders/spree_cm_commissioner/variants/find_by_option_value_ids.rb', line 4

def option_value_ids
  @option_value_ids
end

#productObject (readonly)

Returns the value of attribute product.



4
5
6
# File 'app/finders/spree_cm_commissioner/variants/find_by_option_value_ids.rb', line 4

def product
  @product
end

Instance Method Details

#executeObject



11
12
13
14
15
16
17
# File 'app/finders/spree_cm_commissioner/variants/find_by_option_value_ids.rb', line 11

def execute
  product.variants
         .joins(:option_values)
         .where(spree_option_values: { id: option_value_ids })
         .group("#{Spree::Variant.table_name}.id")
         .having('COUNT(spree_option_values.option_type_id) = ?', option_types_count)
end