Class: Bandwidth::BaseModel

Inherits:
Object
  • Object
show all
Defined in:
lib/bandwidth/models/base_model.rb

Overview

Base model.

Instance Method Summary collapse

Instance Method Details

#to_hashObject

Returns a Hash representation of the current object.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/bandwidth/models/base_model.rb', line 10

def to_hash
  hash = {}
  instance_variables.each do |name|
    value = instance_variable_get(name)
    name = name[1..-1]
    key = self.class.names.key?(name) ? self.class.names[name] : name

    hash[key] = nil
    unless value.nil?
      if respond_to?("to_#{name}")
        if (value.instance_of? Array) || (value.instance_of? Hash)
          params = [hash, key]
          hash[key] = send("to_#{name}", *params)
        else
          hash[key] = send("to_#{name}")
        end
      elsif value.instance_of? Array
        hash[key] = value.map { |v| v.is_a?(BaseModel) ? v.to_hash : v }
      elsif value.instance_of? Hash
        hash[key] = {}
        value.each do |k, v|
          hash[key][k] = v.is_a?(BaseModel) ? v.to_hash : v
        end
      else
        hash[key] = value.is_a?(BaseModel) ? value.to_hash : value
      end
    end
  end
  hash
end

#to_json(options = {}) ⇒ Object

Returns a JSON representation of the curent object.



42
43
44
45
# File 'lib/bandwidth/models/base_model.rb', line 42

def to_json(options = {})
  hash = to_hash.reject { |k, v| v.nil? }
  hash.to_json(options)
end