Class: SpreeCmCommissioner::Metafields::ProductMetadataService
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::Metafields::ProductMetadataService
- Defined in:
- app/services/spree_cm_commissioner/metafields/product_metadata_service.rb
Instance Method Summary collapse
-
#initialize(params) ⇒ ProductMetadataService
constructor
A new instance of ProductMetadataService.
- #product ⇒ Object
- #remove_metafield_by_key(key, scope) ⇒ Object
- #update_metafields(scope) ⇒ Object
Constructor Details
#initialize(params) ⇒ ProductMetadataService
Returns a new instance of ProductMetadataService.
4 5 6 |
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 4 def initialize(params) @params = params end |
Instance Method Details
#product ⇒ Object
8 9 10 |
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 8 def product @product ||= Spree::Product.find_by!(slug: @params[:id]) end |
#remove_metafield_by_key(key, scope) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 22 def (key, scope) = scope == :private ? product. || {} : product. || {} return if ['guests'].blank? ['guests'].reject! { |guest| guest['key'] == key } product.update!(scope == :private ? { private_metadata: } : { public_metadata: }) end |
#update_metafields(scope) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 12 def (scope) = scope == :private ? product. || {} : product. || {} filtered_guests = @params[:metadata][:guests].map(&:to_h).reject { |guest| guest[:key].blank? } [:guests] = filtered_guests product.update!(scope == :private ? { private_metadata: } : { public_metadata: }) end |