Class: Effective::MailchimpList

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/effective/mailchimp_list.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.sync!Object

Creates or builds all the Lists



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/effective/mailchimp_list.rb', line 25

def self.sync!
  # All the Lists from Mailchimp
  lists = EffectiveMailchimp.api.lists

  # Get all our existing Effective::MailchimpList records
  mailchimp_lists = all()

  # Find or create Effective::Mailchimp based on existing lists
  lists.each do |list|
    mailchimp_id = list['id']
    web_id = list['web_id']
    name = list['name']

    mailchimp_list = mailchimp_lists.find { |ml| ml.mailchimp_id == mailchimp_id } || new()
    mailchimp_list.assign_attributes(mailchimp_id: mailchimp_id, web_id: web_id, name: name)
    mailchimp_list.save!
  end

  # Destroy any Effective::Mailchimp resources if they no longer returned by lists
  mailchimp_lists.each do |mailchimp_list|
    list = lists.find { |list| list['id'] == mailchimp_list.mailchimp_id }
    mailchimp_list.destroy! unless list.present?
  end

  true
end

Instance Method Details

#can_subscribe!Object



60
61
62
# File 'app/models/effective/mailchimp_list.rb', line 60

def can_subscribe!
  update!(can_subscribe: true)
end

#cannot_subscribe!Object



64
65
66
# File 'app/models/effective/mailchimp_list.rb', line 64

def cannot_subscribe!
  update!(can_subscribe: false)
end

#members_urlObject



56
57
58
# File 'app/models/effective/mailchimp_list.rb', line 56

def members_url
  EffectiveMailchimp.api.admin_url + "/lists/members?id=#{web_id}"
end

#to_sObject



16
17
18
# File 'app/models/effective/mailchimp_list.rb', line 16

def to_s
  name.presence || model_name.human
end

#urlObject



52
53
54
# File 'app/models/effective/mailchimp_list.rb', line 52

def url
  EffectiveMailchimp.api.admin_url + "/campaigns/#f_list:#{web_id}"
end