Class: ActiveCampaign::Model

Inherits:
Object
  • Object
show all
Includes:
ApiHttp, Attributes, ActiveModel::Dirty, ActiveModel::Model
Defined in:
lib/active_campaign/models/model.rb

Overview

:nodoc:

Constant Summary

Constants included from ApiHttp

ApiHttp::HTTP_METHODS

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Attributes

#only_changes_to_params, #rollback!, #to_params

Class Method Details

.allObject



12
13
14
# File 'lib/active_campaign/models/model.rb', line 12

def all
  get endpoint
end

.create(**args) ⇒ Object



34
35
36
# File 'lib/active_campaign/models/model.rb', line 34

def create(**args)
  new(args).create
end

.filter(args = {}) ⇒ Object



16
17
18
19
20
# File 'lib/active_campaign/models/model.rb', line 16

def filter(args = {})
  query = args.map { |k, v| "filters[#{k}]=#{v}" }.join "&"

  get "#{endpoint}?#{query}"
end

.find(id) ⇒ Object



26
27
28
# File 'lib/active_campaign/models/model.rb', line 26

def find(id)
  get "#{endpoint}/#{id}"
end

.find_by(args = {}) ⇒ Object



22
23
24
# File 'lib/active_campaign/models/model.rb', line 22

def find_by(args = {})
  filter(args).last
end

.save(**args) ⇒ Object



30
31
32
# File 'lib/active_campaign/models/model.rb', line 30

def save(**args)
  new(args).save
end

Instance Method Details

#createObject



57
58
59
60
61
62
63
64
65
# File 'lib/active_campaign/models/model.rb', line 57

def create
  result = self.class.post self.class.endpoint, to_params

  assign_attributes result.to_params.first.last

  changes_applied

  self
end

#destroyObject



67
68
69
# File 'lib/active_campaign/models/model.rb', line 67

def destroy
  self.class.delete "#{self.class.endpoint}/#{id}"
end

#saveObject



39
40
41
42
43
# File 'lib/active_campaign/models/model.rb', line 39

def save
  return update if defined?(id) && id.present?

  create
end

#updateObject



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/active_campaign/models/model.rb', line 45

def update
  return nil unless changed?

  result = self.class.put "#{self.class.endpoint}/#{id}", only_changes_to_params

  assign_attributes result.to_params.first.last

  changes_applied

  self
end