Class: Spree::Addresses::Create
- Inherits:
-
Object
- Object
- Spree::Addresses::Create
- Includes:
- Helper, ServiceModule::Base
- Defined in:
- app/services/spree/addresses/create.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#country ⇒ Object
Returns the value of attribute country.
Instance Method Summary collapse
Methods included from ServiceModule::Base
Instance Attribute Details
#country ⇒ Object
Returns the value of attribute country.
7 8 9 |
# File 'app/services/spree/addresses/create.rb', line 7 def country @country end |
Instance Method Details
#call(address_params: {}, user: nil, **opts) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/services/spree/addresses/create.rb', line 9 def call(address_params: {}, user: nil, **opts) order = opts[:order] default_billing = opts.fetch(:default_billing, false) default_shipping = opts.fetch(:default_shipping, false) address_params = fill_country_and_state_ids(address_params) address = Spree::Address.new(address_params) address.user = user if user.present? ApplicationRecord.transaction do if address.save if user.present? if user.addresses.pluck(:id) == [address.id] user.update(bill_address_id: address.id, ship_address_id: address.id) else assign_to_user_as_default( user: user, address_id: address.id, default_billing: default_billing, default_shipping: default_shipping ) end end assign_to_order(order: order, address_id: address.id) if order.present? success(address) else failure(address) end end end |