Class: Moltin::Api::CrudResource
- Inherits:
-
Object
- Object
- Moltin::Api::CrudResource
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
#data ⇒ Object
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
.all ⇒ Object
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_attributes ⇒ Object
57
58
|
# File 'lib/moltin/api/crud_resource.rb', line 57
def assign_attributes
end
|
#delete ⇒ Object
60
61
|
# File 'lib/moltin/api/crud_resource.rb', line 60
def delete
end
|
#model_name ⇒ Object
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
19
20
21
|
# File 'lib/moltin/rails/api/crud_resource.rb', line 19
def persisted?
false
end
|
#respond_to?(method) ⇒ 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_key ⇒ Object
23
24
25
|
# File 'lib/moltin/rails/api/crud_resource.rb', line 23
def route_key
model_name
end
|
#save ⇒ Object
54
55
|
# File 'lib/moltin/api/crud_resource.rb', line 54
def save
end
|
#to_hash ⇒ Object
89
90
91
|
# File 'lib/moltin/api/crud_resource.rb', line 89
def to_hash
to_s
end
|
#to_key ⇒ Object
11
12
13
|
# File 'lib/moltin/rails/api/crud_resource.rb', line 11
def to_key
nil
end
|
#to_model ⇒ Object
15
16
17
|
# File 'lib/moltin/rails/api/crud_resource.rb', line 15
def to_model
self
end
|
#to_s ⇒ Object
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
|