Module: ActiveCampaign::Attributes::ClassMethods

Defined in:
lib/active_campaign/api_attributes.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#define_attributes(*attrs) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/active_campaign/api_attributes.rb', line 26

def define_attributes(*attrs)
  attrs.each do |attr|
    # ActiveModel's define_attribute_methods
    define_attribute_methods attr

    class_eval <<-RUBY, __FILE__, __LINE__ + 1
      def #{attr}
        @#{attr}
      end

      def #{attr}=(val)
        #{attr}_will_change! unless val == @#{attr}
        @#{attr} = val
      end
    RUBY
  end
end

#endpointObject



66
67
68
# File 'lib/active_campaign/api_attributes.rb', line 66

def endpoint
  name.demodulize.camelize(:lower).pluralize
end

#instantiate_record(klass, data) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/active_campaign/api_attributes.rb', line 52

def instantiate_record(klass, data)
  define_attributes(*data.keys)

  record = klass.new data
  record.clear_changes_information
  record
end

#instantiate_records(klass, records_data) ⇒ Object



60
61
62
63
64
# File 'lib/active_campaign/api_attributes.rb', line 60

def instantiate_records(klass, records_data)
  records_data.map do |record_data|
    instantiate_record klass, record_data
  end
end

#new_record(data) ⇒ Object



48
49
50
# File 'lib/active_campaign/api_attributes.rb', line 48

def new_record(data)
  instantiate_record self, data
end

#new_records(data) ⇒ Object



44
45
46
# File 'lib/active_campaign/api_attributes.rb', line 44

def new_records(data)
  instantiate_records self, data
end

#root_elementObject



70
71
72
# File 'lib/active_campaign/api_attributes.rb', line 70

def root_element
  name.demodulize.camelize(:lower).to_sym
end

#root_elementsObject



74
75
76
# File 'lib/active_campaign/api_attributes.rb', line 74

def root_elements
  root_element.to_s.pluralize.to_sym
end