Class: SpreeCmCommissioner::Guests::Update
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::Guests::Update
- Includes:
- Spree::ServiceModule::Base
- Defined in:
- app/services/spree_cm_commissioner/guests/update.rb
Overview
Updates guest records with dynamic fields.
Per-field replace semantics: for every dynamic_field_id mentioned in the payload, the submitted rows are the complete set of answers for that field; unmentioned fields are untouched. This still handles checkbox deselection (omit that option's row) without a submit containing only e.g. pre_registration fields wiping post_registration answers.
Instance Attribute Summary collapse
-
#guest ⇒ Object
readonly
Returns the value of attribute guest.
-
#guest_params ⇒ Object
readonly
Returns the value of attribute guest_params.
Instance Method Summary collapse
Instance Attribute Details
#guest ⇒ Object (readonly)
Returns the value of attribute guest.
12 13 14 |
# File 'app/services/spree_cm_commissioner/guests/update.rb', line 12 def guest @guest end |
#guest_params ⇒ Object (readonly)
Returns the value of attribute guest_params.
12 13 14 |
# File 'app/services/spree_cm_commissioner/guests/update.rb', line 12 def guest_params @guest_params end |
Instance Method Details
#call(guest:, guest_params:) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/services/spree_cm_commissioner/guests/update.rb', line 14 def call(guest:, guest_params:) @guest = guest @guest_params = guest_params ActiveRecord::Base.transaction do replace_dynamic_fields(guest_params[:guest_dynamic_fields_attributes]) if guest_params[:guest_dynamic_fields_attributes] guest.update!(guest_params.except(:guest_dynamic_fields_attributes)) end success(guest: guest) rescue ActiveRecord::RecordInvalid => e failure(e.record, e.record.errors) end |