Class: EmailControllerHelper::BaseEmailUnsubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/email_controller_helper/base_email_unsubscriber.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(unsubscribe_key) ⇒ BaseEmailUnsubscriber

Returns a new instance of BaseEmailUnsubscriber.



6
7
8
# File 'lib/email_controller_helper/base_email_unsubscriber.rb', line 6

def initialize(unsubscribe_key)
  @unsubscribe_key = unsubscribe_key
end

Instance Attribute Details

#unsubscribe_keyObject (readonly)

Returns the value of attribute unsubscribe_key.



10
11
12
# File 'lib/email_controller_helper/base_email_unsubscriber.rb', line 10

def unsubscribe_key
  @unsubscribe_key
end

Instance Method Details

#prepare_unsubscribe_options(controller) ⇒ Object

Sets instance variables in the ‘EmailController#unsubscribe`, which are later available in the view. Don’t forget to call super when extending this method.



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/email_controller_helper/base_email_unsubscriber.rb', line 14

def prepare_unsubscribe_options(controller)
  controller.instance_variable_set(:@digest_unsubscribe, false)
  controller.instance_variable_set(:@watched_count, nil)
  controller.instance_variable_set(:@type, unsubscribe_key.unsubscribe_key_type)

  controller.instance_variable_set(:@user, key_owner)

  controller.instance_variable_set(
    :@unsubscribed_from_all,
    key_owner.user_option.unsubscribed_from_all?,
  )
end

#unsubscribe(params) ⇒ Object

Called by the ‘EmailController#perform_unsubscribe` and defines what unsubscribing means.

Receives the request params and returns a boolean indicating if any preferences were updated.

Don’t forget to call super when extending this method.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/email_controller_helper/base_email_unsubscriber.rb', line 32

def unsubscribe(params)
  updated = false

  if params[:disable_mailing_list]
    key_owner.user_option.update_columns(mailing_list_mode: false)
    updated = true
  end

  if params[:unsubscribe_all]
    key_owner.user_option.update_columns(
      email_digests: false,
      email_level: UserOption.email_level_types[:never],
      email_messages_level: UserOption.email_level_types[:never],
      mailing_list_mode: false,
    )
    updated = true
  end

  updated
end