6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'app/services/spree/cart/associate.rb', line 6
def call(guest_order:, user:, override_email: true, guest_only: false)
return failure(guest_order, 'Already assigned to a user') if guest_only && guest_order.user.present? && guest_order.user != user
guest_order.user = user
guest_order.email = user.email if override_email
guest_order.bill_address ||= user.bill_address
guest_order.ship_address ||= user.ship_address
changes = guest_order.slice(*Spree::Order::ASSOCIATED_USER_ATTRIBUTES)
ActiveRecord::Base.connected_to(role: :writing) do
Spree::Order.unscoped.where(id: guest_order.id).update_all(changes)
end
guest_order.publish_event('order.updated') if changes.present?
success(guest_order)
end
|