Class: ActiveRecord::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/epom_rails/acts_as.rb

Class Method Summary collapse

Class Method Details

.acts_as(klass, fields = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/epom_rails/acts_as.rb', line 29

def self.acts_as(klass, fields = {})
  extend EpomRails

  self.epom_klass = klass
  self.epom_fields = fields
  
  define_before_save
  define_before_destroy
end

.acts_as_advertiser(fields = {}) ⇒ Object



3
4
5
# File 'lib/epom_rails/acts_as.rb', line 3

def self.acts_as_advertiser(fields = {})
  acts_as(Epom::Advertiser, fields)
end

.acts_as_banner(fields = {}) ⇒ Object



11
12
13
# File 'lib/epom_rails/acts_as.rb', line 11

def self.acts_as_banner(fields = {})
  acts_as(Epom::Banner, fields)
end

.acts_as_campaign(fields = {}) ⇒ Object



7
8
9
# File 'lib/epom_rails/acts_as.rb', line 7

def self.acts_as_campaign(fields = {})
  acts_as(Epom::Campaign, fields)
end

.acts_as_placement(fields = {}) ⇒ Object



23
24
25
# File 'lib/epom_rails/acts_as.rb', line 23

def self.acts_as_placement(fields = {})
  acts_as(Epom::Placement, fields)
end

.acts_as_site(fields = {}) ⇒ Object



15
16
17
# File 'lib/epom_rails/acts_as.rb', line 15

def self.acts_as_site(fields = {})
  acts_as(Epom::Site, fields)
end

.acts_as_zone(fields = {}) ⇒ Object



19
20
21
# File 'lib/epom_rails/acts_as.rb', line 19

def self.acts_as_zone(fields = {})
  acts_as(Epom::Zone, fields)
end

.define_before_destroyObject



73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/epom_rails/acts_as.rb', line 73

def self.define_before_destroy
  unless EpomRails.config.offline
    klass = self.epom_klass
    fields = self.epom_fields
    before_destroy do
      if self.send fields.key('id')
        klass_name = klass.name.include?('::') ? klass.name.split('::').last : klass.name
        epom_response = klass.send "delete_#{klass_name.downcase}", {"#{klass_name.downcase}Id" => self.send(fields.key('id'))}, {}
        epom_response['success'] if epom_response
      end
    end
  end
end

.define_before_saveObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/epom_rails/acts_as.rb', line 39

def self.define_before_save
  unless EpomRails.config.offline
  	klass = self.epom_klass
  	fields = self.epom_fields
  	before_save do 
  		klass_name = klass.name.include?('::') ? klass.name.split('::').last : klass.name

      method = if self.send fields.key('id') then "update_#{klass_name.downcase}" else "create_#{klass_name.downcase}" end
      
      url_params = {}
      if klass.extended_methods[method.to_sym][:url_parameters]
        klass.extended_methods[method.to_sym][:url_parameters].each do |parameter|
          url_params[parameter] = self.send(fields.key(parameter.to_s)) if fields.key(parameter.to_s)
        end
      end

      body_params = {}
      if klass.extended_methods[method.to_sym][:body_parameters]
        klass.extended_methods[method.to_sym][:body_parameters].each do |parameter|
          body_params[parameter] = self.send(fields.key(parameter.to_s)) if fields.key(parameter.to_s)
        end
      end
      
      epom_response = klass.send method, url_params, body_params
  		
      unless self.send fields.key('id')
  			# save id value returned from Epom in an Advertiser column
  			self.send "#{fields.key('id')}=", epom_response['id']
  		end
  		epom_response['success']
  	end
  end  
end