Class: Moltin::Api::CrudResource

Inherits:
Object
  • Object
show all
Defined in:
lib/moltin/api/crud_resource.rb,
lib/moltin/rails/api/crud_resource.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data = {}) ⇒ CrudResource

Returns a new instance of CrudResource.



44
45
46
47
48
49
50
51
52
# File 'lib/moltin/api/crud_resource.rb', line 44

def initialize(data = {})
  @data ||= {}
  self.class.attributes.each do |attribute|
    @data[attribute] ||= nil
  end
  data.each do |key, value|
    @data[key.to_s] = value
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/moltin/api/crud_resource.rb', line 63

def method_missing(method, *args, &block)
  if method.to_s.index('=')
    key = method.to_s.split('=').first.gsub('_attributes', '')
    return set_attribute(key, args[0]) if self.class.attributes.include? key.to_sym
  elsif self.class.attributes.include? method
    return get_attribute(method)
  end
  super
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



42
43
44
# File 'lib/moltin/api/crud_resource.rb', line 42

def data
  @data
end

Class Method Details

.allObject



9
10
11
# File 'lib/moltin/api/crud_resource.rb', line 9

def self.all
  search({})
end

.attributes(*attrs) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/moltin/api/crud_resource.rb', line 29

def self.attributes(*attrs)
  return @attributes if attrs.count === 0
  @attributes ||= []
  attrs.each do |attr|
    @attributes.push(attr)
  end
end

.create(data) ⇒ Object



37
38
39
40
# File 'lib/moltin/api/crud_resource.rb', line 37

def self.create(data)
  result = Request.post(resource_namespace, data).result
  self.new(result)
end

.find(id) ⇒ Object



13
14
15
16
# File 'lib/moltin/api/crud_resource.rb', line 13

def self.find(id)
  response = Moltin::Api::Request.get("#{resource_namespace}/#{id}")
  self.new response.result
end

.find_by(options) ⇒ Object



18
19
20
21
# File 'lib/moltin/api/crud_resource.rb', line 18

def self.find_by(options)
  collection = search(options)
  collection.first
end

.search(options) ⇒ Object



23
24
25
26
27
# File 'lib/moltin/api/crud_resource.rb', line 23

def self.search(options)
  query_string = options.map { |k, v| "#{k}=#{v}" }.join('&')
  results = Request.get("#{resource_namespace}/search#{query_string ? "?#{query_string}" : ''}").result
  Moltin::ResourceCollection.new name, results
end

Instance Method Details

#assign_attributesObject



57
58
# File 'lib/moltin/api/crud_resource.rb', line 57

def assign_attributes
end

#deleteObject



60
61
# File 'lib/moltin/api/crud_resource.rb', line 60

def delete
end

#model_nameObject



7
8
9
# File 'lib/moltin/rails/api/crud_resource.rb', line 7

def model_name
  self.class.name.split('::').last.downcase
end

#persisted?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/moltin/rails/api/crud_resource.rb', line 19

def persisted?
  false
end

#respond_to?(method) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
76
77
78
79
# File 'lib/moltin/api/crud_resource.rb', line 73

def respond_to?(method)
  if method.to_s.index('_attributes=')
    return self.class.attributes.include?(method.to_s.split('_attributes').first.to_sym)
  end
  return true if self.class.attributes.include? method.to_sym
  super
end

#route_keyObject



23
24
25
# File 'lib/moltin/rails/api/crud_resource.rb', line 23

def route_key
  model_name
end

#saveObject



54
55
# File 'lib/moltin/api/crud_resource.rb', line 54

def save
end

#to_hashObject



89
90
91
# File 'lib/moltin/api/crud_resource.rb', line 89

def to_hash
  to_s
end

#to_keyObject



11
12
13
# File 'lib/moltin/rails/api/crud_resource.rb', line 11

def to_key
  nil
end

#to_modelObject



15
16
17
# File 'lib/moltin/rails/api/crud_resource.rb', line 15

def to_model
  self
end

#to_sObject



81
82
83
84
85
86
87
# File 'lib/moltin/api/crud_resource.rb', line 81

def to_s
  _data = {}
  @data.keys.each do |attribute|
    _data[attribute] = send(attribute)
  end
  _data
end