Class: Spree::Newsletter::LinkUser

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree/newsletter/link_user.rb

Overview

Reconciles a Spree::NewsletterSubscriber with the customer who owns the email. Backfills the user link and propagates verified opt-in onto the user record so consent given before account creation isn’t silently lost on registration.

Best-effort: validation failures are logged but never re-raised. Callers are already past the point where rolling back makes sense (the user record exists, the subscription exists). This is reconciliation, not a precondition.

Instance Method Summary collapse

Constructor Details

#initialize(subscriber:, user:) ⇒ LinkUser

Returns a new instance of LinkUser.



11
12
13
14
# File 'app/services/spree/newsletter/link_user.rb', line 11

def initialize(subscriber:, user:)
  @subscriber = subscriber
  @user = user
end

Instance Method Details

#callObject



16
17
18
19
20
21
22
23
24
# File 'app/services/spree/newsletter/link_user.rb', line 16

def call
  return if subscriber.blank? || user.blank?
  return if subscriber.user_id == user.id && !needs_marketing_propagation?

  link_subscriber_to_user
  propagate_marketing_consent if needs_marketing_propagation?

  subscriber
end