her 0.4.1 → 0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +25 -3
- data/UPGRADE.md +6 -0
- data/her.gemspec +1 -0
- data/lib/her/api.rb +2 -1
- data/lib/her/model.rb +9 -2
- data/lib/her/model/http.rb +18 -18
- data/lib/her/model/orm.rb +43 -38
- data/lib/her/model/relationships.rb +3 -3
- data/lib/her/version.rb +1 -1
- data/spec/api_spec.rb +4 -4
- data/spec/model/callbacks_spec.rb +102 -0
- data/spec/model/dirty_spec.rb +5 -0
- data/spec/model/http_spec.rb +3 -3
- data/spec/model/orm_spec.rb +3 -2
- data/spec/model/relationships_spec.rb +12 -1
- data/spec/model/validations_spec.rb +5 -0
- metadata +23 -6
- data/lib/her/model/hooks.rb +0 -114
- data/spec/model/hooks_spec.rb +0 -406
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODkyMGNiNzY1MDY3MGY1YjBhMTQ1YTQ5Mjk3NWZmNmIwMDVmZWI3Mg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjAzYjJkNWQ2YjIyZTIwOThmYjY5ZTRhNzJkOWZkZGZmNzlmMmY3Mg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YzgxZTFkNWI1NGUzZWYzNDk2NTQ1NjhlYWYzNmZiMzAwNmEyYjE2MWUxYTU3
|
10
|
+
YTc5MDRlYjZhZDBmZmQ0YTUzOGNmNTM4NDViMzliMDQ4MmZhZGE3NjUxZDIy
|
11
|
+
NjJjYWNhZWM0ODYwODg5ZTEzNGVjYWZjNTVlYjIzY2JiNTNjY2Q=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NTdjYmNjZTQ1ZDVjYmM5NGZmNmRmN2M3NjhjNjJjZWU4MTljOWE1YjJmZmY4
|
14
|
+
YTg4NzgxNmI0YWQzOTljZGJlNjUzNzI5NDI2NzMxNjI3Mzk4MTNjMDNkOGNi
|
15
|
+
YTQ1ZGExNjU0OGRiZWJmYzNlZTM1ZDY5NWMwNTQxNWViZGNmMTM=
|
data/README.md
CHANGED
@@ -340,9 +340,31 @@ If there’s no relationship data in the resource, Her makes a HTTP request to r
|
|
340
340
|
|
341
341
|
Subsequent calls to `#comments`, `#role` and `#organization` will not trigger extra HTTP requests and will return the cached objects.
|
342
342
|
|
343
|
-
###
|
343
|
+
### Validations
|
344
344
|
|
345
|
-
|
345
|
+
Her includes `ActiveModel::Validations` so you can declare validations the same way you do in Rails.
|
346
|
+
|
347
|
+
However, validations must be triggered manually — they are not run, for example, when calling `#save` on an object, or `#create` on a model class.
|
348
|
+
|
349
|
+
```ruby
|
350
|
+
class User
|
351
|
+
include Her::Model
|
352
|
+
|
353
|
+
attr_accessor :fullname, :email
|
354
|
+
validates :fullname, :presence => true
|
355
|
+
validates :email, :presence => true
|
356
|
+
end
|
357
|
+
|
358
|
+
@user = User.new(:fullname => "Tobias Fünke")
|
359
|
+
@user.valid? # => false
|
360
|
+
|
361
|
+
@user.save
|
362
|
+
# POST /users&fullname=Tobias+Fünke will still be called, even if the user is not valid
|
363
|
+
```
|
364
|
+
|
365
|
+
### Callbacks
|
366
|
+
|
367
|
+
You can add *before* and *after* callbacks to your models that are triggered on specific actions. You can use symbols or blocks.
|
346
368
|
|
347
369
|
```ruby
|
348
370
|
class User
|
@@ -362,7 +384,7 @@ end
|
|
362
384
|
@user.fullname # => "TOBIAS FUNKE"
|
363
385
|
```
|
364
386
|
|
365
|
-
The available
|
387
|
+
The available callbacks are:
|
366
388
|
|
367
389
|
* `before_save`
|
368
390
|
* `before_create`
|
data/UPGRADE.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
Here is a list of backward-incompatible changes that were introduced while Her is pre-1.0. After reaching 1.0, it will follow the [Semantic Versioning](http://semver.org/) system.
|
4
4
|
|
5
|
+
## 0.5
|
6
|
+
|
7
|
+
* Her is now compatible with `ActiveModel` and includes `ActiveModel::Validations`.
|
8
|
+
|
9
|
+
Before 0.5, the `errors` method on an object would return an error list received from the server (the `:errors` key defined by the parsing middleware). But now, `errors` returns the error list generated after calling the `valid?` method (or any other similar validation method from `ActiveModel::Validations`). The error list returned from the server is now accessible from the `response_errors` method.
|
10
|
+
|
5
11
|
## 0.2.4
|
6
12
|
|
7
13
|
* Her no longer includes default middleware when making HTTP requests. The user has now to define all the needed middleware. Before:
|
data/her.gemspec
CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_development_dependency "rspec", "~> 2.13"
|
22
22
|
s.add_development_dependency "mocha", "~> 0.13"
|
23
23
|
|
24
|
+
s.add_runtime_dependency "activemodel", ">= 3.0.0"
|
24
25
|
s.add_runtime_dependency "activesupport", ">= 3.0.0"
|
25
26
|
s.add_runtime_dependency "faraday", "~> 0.8"
|
26
27
|
s.add_runtime_dependency "multi_json", "~> 1.5"
|
data/lib/her/api.rb
CHANGED
data/lib/her/model.rb
CHANGED
@@ -2,10 +2,10 @@ require "her/model/base"
|
|
2
2
|
require "her/model/http"
|
3
3
|
require "her/model/orm"
|
4
4
|
require "her/model/relationships"
|
5
|
-
require "her/model/hooks"
|
6
5
|
require "her/model/introspection"
|
7
6
|
require "her/model/paths"
|
8
7
|
require "her/model/nested_attributes"
|
8
|
+
require "active_model"
|
9
9
|
|
10
10
|
module Her
|
11
11
|
# This module is the main element of Her. After creating a Her::API object,
|
@@ -27,12 +27,19 @@ module Her
|
|
27
27
|
include Her::Model::Paths
|
28
28
|
include Her::Model::Relationships
|
29
29
|
include Her::Model::NestedAttributes
|
30
|
+
include ActiveModel::Validations
|
31
|
+
include ActiveModel::Conversion
|
32
|
+
include ActiveModel::Dirty
|
30
33
|
|
31
34
|
# Class methods
|
32
35
|
included do
|
33
36
|
extend Her::Model::Base
|
34
37
|
extend Her::Model::HTTP
|
35
|
-
extend
|
38
|
+
extend ActiveModel::Naming
|
39
|
+
extend ActiveModel::Translation
|
40
|
+
|
41
|
+
extend ActiveModel::Callbacks
|
42
|
+
define_model_callbacks :create, :update, :save, :find, :destroy
|
36
43
|
|
37
44
|
# Define default settings
|
38
45
|
root_element self.name.split("::").last.underscore
|
data/lib/her/model/http.rb
CHANGED
@@ -21,11 +21,11 @@ module Her
|
|
21
21
|
# Main request wrapper around Her::API. Used to make custom request to the API.
|
22
22
|
# @private
|
23
23
|
def request(attrs={})
|
24
|
-
|
24
|
+
request = her_api.request(attrs)
|
25
25
|
if block_given?
|
26
|
-
yield parsed_data
|
26
|
+
yield request[:parsed_data], request[:response]
|
27
27
|
else
|
28
|
-
parsed_data
|
28
|
+
{ :parsed_data => request[:parsed_data], :response => request[:response] }
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -40,7 +40,7 @@ module Her
|
|
40
40
|
# # Fetched via GET "/users/popular"
|
41
41
|
def get(path, attrs={})
|
42
42
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
43
|
-
get_raw(path, attrs) do |parsed_data|
|
43
|
+
get_raw(path, attrs) do |parsed_data, response|
|
44
44
|
if parsed_data[:data].is_a?(Array)
|
45
45
|
new_collection(parsed_data)
|
46
46
|
else
|
@@ -58,7 +58,7 @@ module Her
|
|
58
58
|
# Make a GET request and return a collection of resources
|
59
59
|
def get_collection(path=nil, attrs={})
|
60
60
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
61
|
-
get_raw(path, attrs) do |parsed_data|
|
61
|
+
get_raw(path, attrs) do |parsed_data, response|
|
62
62
|
new_collection(parsed_data)
|
63
63
|
end
|
64
64
|
end
|
@@ -66,7 +66,7 @@ module Her
|
|
66
66
|
# Make a GET request and return a collection of resources
|
67
67
|
def get_resource(path, attrs={})
|
68
68
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
69
|
-
get_raw(path, attrs) do |parsed_data|
|
69
|
+
get_raw(path, attrs) do |parsed_data, response|
|
70
70
|
new(parse(parsed_data[:data]).merge :_metadata => parsed_data[:data], :_errors => parsed_data[:errors])
|
71
71
|
end
|
72
72
|
end
|
@@ -74,7 +74,7 @@ module Her
|
|
74
74
|
# Make a POST request and return either a collection or a resource
|
75
75
|
def post(path, attrs={})
|
76
76
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
77
|
-
post_raw(path, attrs) do |parsed_data|
|
77
|
+
post_raw(path, attrs) do |parsed_data, response|
|
78
78
|
if parsed_data[:data].is_a?(Array)
|
79
79
|
new_collection(parsed_data)
|
80
80
|
else
|
@@ -92,7 +92,7 @@ module Her
|
|
92
92
|
# Make a POST request and return a collection of resources
|
93
93
|
def post_collection(path, attrs={})
|
94
94
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
95
|
-
post_raw(path, attrs) do |parsed_data|
|
95
|
+
post_raw(path, attrs) do |parsed_data, response|
|
96
96
|
new_collection(parsed_data)
|
97
97
|
end
|
98
98
|
end
|
@@ -100,7 +100,7 @@ module Her
|
|
100
100
|
# Make a POST request and return a collection of resources
|
101
101
|
def post_resource(path, attrs={})
|
102
102
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
103
|
-
post_raw(path, attrs) do |parsed_data|
|
103
|
+
post_raw(path, attrs) do |parsed_data, response|
|
104
104
|
new(parse(parsed_data[:data]))
|
105
105
|
end
|
106
106
|
end
|
@@ -108,7 +108,7 @@ module Her
|
|
108
108
|
# Make a PUT request and return either a collection or a resource
|
109
109
|
def put(path, attrs={})
|
110
110
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
111
|
-
put_raw(path, attrs) do |parsed_data|
|
111
|
+
put_raw(path, attrs) do |parsed_data, response|
|
112
112
|
if parsed_data[:data].is_a?(Array)
|
113
113
|
new_collection(parsed_data)
|
114
114
|
else
|
@@ -126,7 +126,7 @@ module Her
|
|
126
126
|
# Make a PUT request and return a collection of resources
|
127
127
|
def put_collection(path, attrs={})
|
128
128
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
129
|
-
put_raw(path, attrs) do |parsed_data|
|
129
|
+
put_raw(path, attrs) do |parsed_data, response|
|
130
130
|
new_collection(parsed_data)
|
131
131
|
end
|
132
132
|
end
|
@@ -134,7 +134,7 @@ module Her
|
|
134
134
|
# Make a PUT request and return a collection of resources
|
135
135
|
def put_resource(path, attrs={})
|
136
136
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
137
|
-
put_raw(path, attrs) do |parsed_data|
|
137
|
+
put_raw(path, attrs) do |parsed_data, response|
|
138
138
|
new(parse(parsed_data[:data]).merge :_metadata => parsed_data[:data], :_errors => parsed_data[:errors])
|
139
139
|
end
|
140
140
|
end
|
@@ -142,7 +142,7 @@ module Her
|
|
142
142
|
# Make a PATCH request and return either a collection or a resource
|
143
143
|
def patch(path, attrs={})
|
144
144
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
145
|
-
patch_raw(path, attrs) do |parsed_data|
|
145
|
+
patch_raw(path, attrs) do |parsed_data, response|
|
146
146
|
if parsed_data[:data].is_a?(Array)
|
147
147
|
new_collection(parsed_data)
|
148
148
|
else
|
@@ -160,7 +160,7 @@ module Her
|
|
160
160
|
# Make a PATCH request and return a collection of resources
|
161
161
|
def patch_collection(path, attrs={})
|
162
162
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
163
|
-
patch_raw(path, attrs) do |parsed_data|
|
163
|
+
patch_raw(path, attrs) do |parsed_data, response|
|
164
164
|
new_collection(parsed_data)
|
165
165
|
end
|
166
166
|
end
|
@@ -168,7 +168,7 @@ module Her
|
|
168
168
|
# Make a PATCH request and return a collection of resources
|
169
169
|
def patch_resource(path, attrs={})
|
170
170
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
171
|
-
patch_raw(path, attrs) do |parsed_data|
|
171
|
+
patch_raw(path, attrs) do |parsed_data, response|
|
172
172
|
new(parse(parsed_data[:data]).merge :_metadata => parsed_data[:data], :_errors => parsed_data[:errors])
|
173
173
|
end
|
174
174
|
end
|
@@ -176,7 +176,7 @@ module Her
|
|
176
176
|
# Make a DELETE request and return either a collection or a resource
|
177
177
|
def delete(path, attrs={})
|
178
178
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
179
|
-
delete_raw(path, attrs) do |parsed_data|
|
179
|
+
delete_raw(path, attrs) do |parsed_data, response|
|
180
180
|
if parsed_data[:data].is_a?(Array)
|
181
181
|
new_collection(parsed_data)
|
182
182
|
else
|
@@ -194,7 +194,7 @@ module Her
|
|
194
194
|
# Make a DELETE request and return a collection of resources
|
195
195
|
def delete_collection(path, attrs={})
|
196
196
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
197
|
-
delete_raw(path, attrs) do |parsed_data|
|
197
|
+
delete_raw(path, attrs) do |parsed_data, response|
|
198
198
|
new_collection(parsed_data)
|
199
199
|
end
|
200
200
|
end
|
@@ -202,7 +202,7 @@ module Her
|
|
202
202
|
# Make a DELETE request and return a collection of resources
|
203
203
|
def delete_resource(path, attrs={})
|
204
204
|
path = "#{build_request_path(attrs)}/#{path}" if path.is_a?(Symbol)
|
205
|
-
delete_raw(path, attrs) do |parsed_data|
|
205
|
+
delete_raw(path, attrs) do |parsed_data, response|
|
206
206
|
new(parse(parsed_data[:data]).merge :_metadata => parsed_data[:data], :_errors => parsed_data[:errors])
|
207
207
|
end
|
208
208
|
end
|
data/lib/her/model/orm.rb
CHANGED
@@ -3,14 +3,15 @@ module Her
|
|
3
3
|
# This module adds ORM-like capabilities to the model
|
4
4
|
module ORM
|
5
5
|
extend ActiveSupport::Concern
|
6
|
-
attr_accessor :data, :metadata, :
|
6
|
+
attr_accessor :data, :metadata, :response_errors
|
7
7
|
alias :attributes :data
|
8
8
|
alias :attributes= :data=
|
9
9
|
|
10
10
|
# Initialize a new object with data received from an HTTP request
|
11
11
|
def initialize(params={})
|
12
12
|
@metadata = params.delete(:_metadata) || {}
|
13
|
-
@
|
13
|
+
@response_errors = params.delete(:_errors) || {}
|
14
|
+
@destroyed = params.delete(:_destroyed) || false
|
14
15
|
|
15
16
|
update_data(params)
|
16
17
|
end
|
@@ -20,7 +21,7 @@ module Her
|
|
20
21
|
def self.initialize_collection(klass, parsed_data={})
|
21
22
|
collection_data = parsed_data[:data].map do |item_data|
|
22
23
|
resource = klass.new(klass.parse(item_data))
|
23
|
-
|
24
|
+
resource.run_callbacks :find
|
24
25
|
resource
|
25
26
|
end
|
26
27
|
Her::Collection.new(collection_data, parsed_data[:metadata], parsed_data[:errors])
|
@@ -92,16 +93,6 @@ module Her
|
|
92
93
|
!@data.include?(:id)
|
93
94
|
end
|
94
95
|
|
95
|
-
# Return `true` if a resource does not contain errors
|
96
|
-
def valid?
|
97
|
-
@errors.empty?
|
98
|
-
end
|
99
|
-
|
100
|
-
# Return `true` if a resource contains errors
|
101
|
-
def invalid?
|
102
|
-
@errors.any?
|
103
|
-
end
|
104
|
-
|
105
96
|
# Return `true` if the other object is also a Her::Model and has matching data
|
106
97
|
def ==(other)
|
107
98
|
other.is_a?(Her::Model) && @data == other.data
|
@@ -118,6 +109,11 @@ module Her
|
|
118
109
|
@data.hash
|
119
110
|
end
|
120
111
|
|
112
|
+
# Return whether the object has been destroyed
|
113
|
+
def destroyed?
|
114
|
+
@destroyed
|
115
|
+
end
|
116
|
+
|
121
117
|
# Save a resource
|
122
118
|
#
|
123
119
|
# @example Save a resource after fetching it
|
@@ -136,20 +132,22 @@ module Her
|
|
136
132
|
resource = self
|
137
133
|
|
138
134
|
if @data[:id]
|
139
|
-
|
135
|
+
callback = :update
|
140
136
|
method = :put
|
141
137
|
else
|
142
|
-
|
138
|
+
callback = :create
|
143
139
|
method = :post
|
144
140
|
end
|
145
141
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
142
|
+
run_callbacks callback do
|
143
|
+
run_callbacks :save do
|
144
|
+
self.class.request(params.merge(:_method => method, :_path => "#{request_path}")) do |parsed_data, response|
|
145
|
+
update_data(self.class.parse(parsed_data[:data])) if parsed_data[:data].any?
|
146
|
+
self.metadata = parsed_data[:metadata]
|
147
|
+
self.response_errors = parsed_data[:errors]
|
151
148
|
|
152
|
-
|
149
|
+
return false if self.response_errors.any?
|
150
|
+
end
|
153
151
|
end
|
154
152
|
end
|
155
153
|
|
@@ -164,11 +162,12 @@ module Her
|
|
164
162
|
# # Called via DELETE "/users/1"
|
165
163
|
def destroy
|
166
164
|
resource = self
|
167
|
-
|
168
|
-
|
165
|
+
run_callbacks :destroy do
|
166
|
+
self.class.request(:_method => :delete, :_path => "#{request_path}") do |parsed_data, response|
|
169
167
|
update_data(self.class.parse(parsed_data[:data])) if parsed_data[:data].any?
|
170
168
|
self.metadata = parsed_data[:metadata]
|
171
|
-
self.
|
169
|
+
self.response_errors = parsed_data[:errors]
|
170
|
+
@destroyed = true
|
172
171
|
end
|
173
172
|
end
|
174
173
|
self
|
@@ -229,9 +228,13 @@ module Her
|
|
229
228
|
params = ids.last.is_a?(Hash) ? ids.pop : {}
|
230
229
|
results = ids.flatten.compact.uniq.map do |id|
|
231
230
|
resource = nil
|
232
|
-
request(params.merge(:_method => :get, :_path => "#{build_request_path(params.merge(:id => id))}")) do |parsed_data|
|
233
|
-
|
234
|
-
|
231
|
+
request(params.merge(:_method => :get, :_path => "#{build_request_path(params.merge(:id => id))}")) do |parsed_data, response|
|
232
|
+
if response.success?
|
233
|
+
resource = new(parse(parsed_data[:data]).merge :_metadata => parsed_data[:data], :_errors => parsed_data[:errors])
|
234
|
+
resource.run_callbacks :find
|
235
|
+
else
|
236
|
+
return nil
|
237
|
+
end
|
235
238
|
end
|
236
239
|
resource
|
237
240
|
end
|
@@ -248,7 +251,7 @@ module Her
|
|
248
251
|
# @users = User.all
|
249
252
|
# # Fetched via GET "/users"
|
250
253
|
def all(params={})
|
251
|
-
request(params.merge(:_method => :get, :_path => "#{build_request_path(params)}")) do |parsed_data|
|
254
|
+
request(params.merge(:_method => :get, :_path => "#{build_request_path(params)}")) do |parsed_data, response|
|
252
255
|
new_collection(parsed_data)
|
253
256
|
end
|
254
257
|
end
|
@@ -260,14 +263,16 @@ module Her
|
|
260
263
|
# # Called via POST "/users/1"
|
261
264
|
def create(params={})
|
262
265
|
resource = new(params)
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
266
|
+
resource.run_callbacks :create do
|
267
|
+
resource.run_callbacks :save do
|
268
|
+
params = resource.to_params
|
269
|
+
request(params.merge(:_method => :post, :_path => "#{build_request_path(params)}")) do |parsed_data, response|
|
270
|
+
data = parse(parsed_data[:data])
|
271
|
+
resource.instance_eval do
|
272
|
+
update_data(data)
|
273
|
+
@metadata = parsed_data[:metadata]
|
274
|
+
@response_errors = parsed_data[:errors]
|
275
|
+
end
|
271
276
|
end
|
272
277
|
end
|
273
278
|
end
|
@@ -291,8 +296,8 @@ module Her
|
|
291
296
|
# User.destroy_existing(1)
|
292
297
|
# # Called via DELETE "/users/1"
|
293
298
|
def destroy_existing(id, params={})
|
294
|
-
request(params.merge(:_method => :delete, :_path => "#{build_request_path(params.merge(:id => id))}")) do |parsed_data|
|
295
|
-
new(parse(parsed_data[:data]))
|
299
|
+
request(params.merge(:_method => :delete, :_path => "#{build_request_path(params.merge(:id => id))}")) do |parsed_data, response|
|
300
|
+
new(parse(parsed_data[:data]).merge(:_destroyed => true))
|
296
301
|
end
|
297
302
|
end
|
298
303
|
|
@@ -83,7 +83,7 @@ module Her
|
|
83
83
|
method_attrs = method_attrs[0] || {}
|
84
84
|
klass = self.class.nearby_class(attrs[:class_name])
|
85
85
|
if method_attrs.any?
|
86
|
-
@data[name] = klass.get_collection("#{self.class.build_request_path(method_attrs.merge(:id => id))}#{attrs[:path]}")
|
86
|
+
@data[name] = klass.get_collection("#{self.class.build_request_path(method_attrs.merge(:id => id))}#{attrs[:path]}", method_attrs)
|
87
87
|
else
|
88
88
|
@data[name] ||= klass.get_collection("#{self.class.build_request_path(:id => id)}#{attrs[:path]}")
|
89
89
|
end
|
@@ -131,7 +131,7 @@ module Her
|
|
131
131
|
method_attrs = method_attrs[0] || {}
|
132
132
|
klass = self.class.nearby_class(attrs[:class_name])
|
133
133
|
if method_attrs.any?
|
134
|
-
klass.get_resource("#{self.class.build_request_path(method_attrs.merge(:id => id))}#{attrs[:path]}")
|
134
|
+
klass.get_resource("#{self.class.build_request_path(method_attrs.merge(:id => id))}#{attrs[:path]}", method_attrs)
|
135
135
|
else
|
136
136
|
@data[name] ||= klass.get_resource("#{self.class.build_request_path(:id => id)}#{attrs[:path]}")
|
137
137
|
end
|
@@ -169,7 +169,7 @@ module Her
|
|
169
169
|
method_attrs = method_attrs[0] || {}
|
170
170
|
klass = self.class.nearby_class(attrs[:class_name])
|
171
171
|
if method_attrs.any?
|
172
|
-
klass.get_resource("#{klass.build_request_path(method_attrs.merge(:id => @data[attrs[:foreign_key].to_sym]))}")
|
172
|
+
klass.get_resource("#{klass.build_request_path(method_attrs.merge(:id => @data[attrs[:foreign_key].to_sym]))}", method_attrs)
|
173
173
|
else
|
174
174
|
@data[name] ||= klass.get_resource("#{klass.build_request_path(:id => @data[attrs[:foreign_key].to_sym])}")
|
175
175
|
end
|