Module: RouteNGN::InstanceMethods

Defined in:
lib/routengn/mapper.rb

Overview

TODO perhaps we can add some of the goodies provided through relationships like ‘<<’

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#savedObject

Returns the value of attribute saved.



13
14
15
# File 'lib/routengn/mapper.rb', line 13

def saved
  @saved
end

Instance Method Details

#attr_paramsObject



22
23
24
25
26
27
# File 'lib/routengn/mapper.rb', line 22

def attr_params
  self.attributes.inject({}) do |params, (k, v)|
    params["#{self.class.name.downcase}[#{k}]"] = v
    params
  end
end

#attributesObject



15
16
17
18
19
20
# File 'lib/routengn/mapper.rb', line 15

def attributes
  self.class.fields.inject({}) do |_, field|
    _[field] = send field
    _
  end
end

#destroyObject



53
54
55
56
# File 'lib/routengn/mapper.rb', line 53

def destroy
  response = RouteNGN.delete self.class.base_url, :id => primary
  response.success?
end

#new?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/routengn/mapper.rb', line 29

def new?
  !(@saved ||= false)
end

#saveObject



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

def save
  response = if new?
    RouteNGN.post self.class.base_url, attr_params
  else
    RouteNGN.put self.class.base_url, attr_params
  end      

  return false if !response.success?

  @saved = true

  # populates fields with data that was sent back      
  self.class.fields.each do |field|
    element = response['data'].first
    self.send :"#{field}=", element[field.to_s] if element[field.to_s]
  end

  true
end