jsonapi_compliable 0.6.4 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +11 -3
- data/.yardopts +1 -0
- data/README.md +10 -1
- data/Rakefile +1 -0
- data/docs/JsonapiCompliable.html +202 -0
- data/docs/JsonapiCompliable/Adapters.html +119 -0
- data/docs/JsonapiCompliable/Adapters/Abstract.html +2285 -0
- data/docs/JsonapiCompliable/Adapters/ActiveRecord.html +2151 -0
- data/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html +582 -0
- data/docs/JsonapiCompliable/Adapters/Null.html +1682 -0
- data/docs/JsonapiCompliable/Base.html +1395 -0
- data/docs/JsonapiCompliable/Deserializer.html +835 -0
- data/docs/JsonapiCompliable/Errors.html +115 -0
- data/docs/JsonapiCompliable/Errors/BadFilter.html +124 -0
- data/docs/JsonapiCompliable/Errors/StatNotFound.html +266 -0
- data/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html +264 -0
- data/docs/JsonapiCompliable/Errors/ValidationError.html +124 -0
- data/docs/JsonapiCompliable/Extensions.html +117 -0
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute.html +212 -0
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html +229 -0
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute.html +242 -0
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html +237 -0
- data/docs/JsonapiCompliable/Query.html +1099 -0
- data/docs/JsonapiCompliable/Rails.html +211 -0
- data/docs/JsonapiCompliable/Resource.html +5241 -0
- data/docs/JsonapiCompliable/Scope.html +703 -0
- data/docs/JsonapiCompliable/Scoping.html +117 -0
- data/docs/JsonapiCompliable/Scoping/Base.html +843 -0
- data/docs/JsonapiCompliable/Scoping/DefaultFilter.html +318 -0
- data/docs/JsonapiCompliable/Scoping/ExtraFields.html +301 -0
- data/docs/JsonapiCompliable/Scoping/Filter.html +313 -0
- data/docs/JsonapiCompliable/Scoping/Filterable.html +364 -0
- data/docs/JsonapiCompliable/Scoping/Paginate.html +613 -0
- data/docs/JsonapiCompliable/Scoping/Sort.html +454 -0
- data/docs/JsonapiCompliable/SerializableTempId.html +216 -0
- data/docs/JsonapiCompliable/Sideload.html +2484 -0
- data/docs/JsonapiCompliable/Stats.html +117 -0
- data/docs/JsonapiCompliable/Stats/DSL.html +999 -0
- data/docs/JsonapiCompliable/Stats/Payload.html +391 -0
- data/docs/JsonapiCompliable/Util.html +117 -0
- data/docs/JsonapiCompliable/Util/FieldParams.html +228 -0
- data/docs/JsonapiCompliable/Util/Hash.html +471 -0
- data/docs/JsonapiCompliable/Util/IncludeParams.html +299 -0
- data/docs/JsonapiCompliable/Util/Persistence.html +435 -0
- data/docs/JsonapiCompliable/Util/RelationshipPayload.html +563 -0
- data/docs/JsonapiCompliable/Util/RenderOptions.html +250 -0
- data/docs/JsonapiCompliable/Util/ValidationResponse.html +532 -0
- data/docs/_index.html +527 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +492 -0
- data/docs/file.README.html +99 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +99 -0
- data/docs/js/app.js +248 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +1731 -0
- data/docs/top-level-namespace.html +110 -0
- data/gemfiles/rails_5.gemfile +1 -1
- data/lib/jsonapi_compliable/adapters/abstract.rb +267 -4
- data/lib/jsonapi_compliable/adapters/active_record.rb +23 -1
- data/lib/jsonapi_compliable/adapters/null.rb +43 -3
- data/lib/jsonapi_compliable/base.rb +182 -33
- data/lib/jsonapi_compliable/deserializer.rb +90 -21
- data/lib/jsonapi_compliable/extensions/boolean_attribute.rb +12 -0
- data/lib/jsonapi_compliable/extensions/extra_attribute.rb +32 -0
- data/lib/jsonapi_compliable/extensions/temp_id.rb +11 -0
- data/lib/jsonapi_compliable/query.rb +94 -2
- data/lib/jsonapi_compliable/rails.rb +8 -0
- data/lib/jsonapi_compliable/resource.rb +548 -11
- data/lib/jsonapi_compliable/scope.rb +43 -1
- data/lib/jsonapi_compliable/scoping/base.rb +59 -8
- data/lib/jsonapi_compliable/scoping/default_filter.rb +33 -0
- data/lib/jsonapi_compliable/scoping/extra_fields.rb +33 -0
- data/lib/jsonapi_compliable/scoping/filter.rb +29 -2
- data/lib/jsonapi_compliable/scoping/filterable.rb +4 -0
- data/lib/jsonapi_compliable/scoping/paginate.rb +33 -0
- data/lib/jsonapi_compliable/scoping/sort.rb +18 -0
- data/lib/jsonapi_compliable/sideload.rb +229 -1
- data/lib/jsonapi_compliable/stats/dsl.rb +44 -0
- data/lib/jsonapi_compliable/stats/payload.rb +20 -0
- data/lib/jsonapi_compliable/util/field_params.rb +1 -0
- data/lib/jsonapi_compliable/util/hash.rb +18 -0
- data/lib/jsonapi_compliable/util/include_params.rb +22 -0
- data/lib/jsonapi_compliable/util/persistence.rb +13 -3
- data/lib/jsonapi_compliable/util/relationship_payload.rb +2 -0
- data/lib/jsonapi_compliable/util/render_options.rb +2 -0
- data/lib/jsonapi_compliable/util/validation_response.rb +16 -0
- data/lib/jsonapi_compliable/version.rb +1 -1
- metadata +60 -5
- data/gemfiles/rails_4.gemfile.lock +0 -208
- data/gemfiles/rails_5.gemfile.lock +0 -212
- data/lib/jsonapi_compliable/write.rb +0 -93
|
@@ -0,0 +1,1395 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>
|
|
7
|
+
Module: JsonapiCompliable::Base
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.9.9
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
|
18
|
+
pathId = "JsonapiCompliable::Base";
|
|
19
|
+
relpath = '../';
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
|
24
|
+
|
|
25
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
</head>
|
|
29
|
+
<body>
|
|
30
|
+
<div class="nav_wrap">
|
|
31
|
+
<iframe id="nav" src="../class_list.html?1"></iframe>
|
|
32
|
+
<div id="resizer"></div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div id="main" tabindex="-1">
|
|
36
|
+
<div id="header">
|
|
37
|
+
<div id="menu">
|
|
38
|
+
|
|
39
|
+
<a href="../_index.html">Index (B)</a> »
|
|
40
|
+
<span class='title'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span>
|
|
41
|
+
»
|
|
42
|
+
<span class="title">Base</span>
|
|
43
|
+
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div id="search">
|
|
47
|
+
|
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
|
49
|
+
href="../class_list.html">
|
|
50
|
+
|
|
51
|
+
<svg width="24" height="24">
|
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
|
55
|
+
</svg>
|
|
56
|
+
</a>
|
|
57
|
+
|
|
58
|
+
</div>
|
|
59
|
+
<div class="clear"></div>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div id="content"><h1>Module: JsonapiCompliable::Base
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
</h1>
|
|
67
|
+
<div class="box_info">
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
<dl>
|
|
73
|
+
<dt>Extended by:</dt>
|
|
74
|
+
<dd>ActiveSupport::Concern</dd>
|
|
75
|
+
</dl>
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
<dl>
|
|
85
|
+
<dt>Defined in:</dt>
|
|
86
|
+
<dd>lib/jsonapi_compliable/base.rb</dd>
|
|
87
|
+
</dl>
|
|
88
|
+
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<h2>Overview</h2><div class="docstring">
|
|
92
|
+
<div class="discussion">
|
|
93
|
+
|
|
94
|
+
<p>Provides main interface to jsonapi_compliable</p>
|
|
95
|
+
|
|
96
|
+
<p>This gets mixed in to a “context” class, such as a Rails controller.</p>
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="tags">
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
<h2>
|
|
113
|
+
Class Method Summary
|
|
114
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
|
115
|
+
</h2>
|
|
116
|
+
|
|
117
|
+
<ul class="summary">
|
|
118
|
+
|
|
119
|
+
<li class="public ">
|
|
120
|
+
<span class="summary_signature">
|
|
121
|
+
|
|
122
|
+
<a href="#jsonapi-class_method" title="jsonapi (class method)">.<strong>jsonapi</strong>(foo = 'bar', resource: nil, &blk) ⇒ void </a>
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
</span>
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
<span class="summary_desc"><div class='inline'>
|
|
137
|
+
<p>Define your JSONAPI configuration.</p>
|
|
138
|
+
</div></span>
|
|
139
|
+
|
|
140
|
+
</li>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
</ul>
|
|
144
|
+
|
|
145
|
+
<h2>
|
|
146
|
+
Instance Method Summary
|
|
147
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
|
148
|
+
</h2>
|
|
149
|
+
|
|
150
|
+
<ul class="summary">
|
|
151
|
+
|
|
152
|
+
<li class="public ">
|
|
153
|
+
<span class="summary_signature">
|
|
154
|
+
|
|
155
|
+
<a href="#default_jsonapi_render_options-instance_method" title="#default_jsonapi_render_options (instance method)">#<strong>default_jsonapi_render_options</strong> ⇒ Hash </a>
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
</span>
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
<span class="summary_desc"><div class='inline'>
|
|
170
|
+
<p>Define a hash that will be automatically merged into your render_jsonapi
|
|
171
|
+
call.</p>
|
|
172
|
+
</div></span>
|
|
173
|
+
|
|
174
|
+
</li>
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
<li class="public ">
|
|
178
|
+
<span class="summary_signature">
|
|
179
|
+
|
|
180
|
+
<a href="#deserialized_params-instance_method" title="#deserialized_params (instance method)">#<strong>deserialized_params</strong> ⇒ Deserializer </a>
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
</span>
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
<span class="summary_desc"><div class='inline'></div></span>
|
|
195
|
+
|
|
196
|
+
</li>
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
<li class="public ">
|
|
200
|
+
<span class="summary_signature">
|
|
201
|
+
|
|
202
|
+
<a href="#jsonapi_create-instance_method" title="#jsonapi_create (instance method)">#<strong>jsonapi_create</strong> ⇒ Util::ValidationResponse </a>
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
</span>
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
<span class="summary_desc"><div class='inline'>
|
|
217
|
+
<p>Create the resource model and process all nested relationships via the
|
|
218
|
+
serialized parameters.</p>
|
|
219
|
+
</div></span>
|
|
220
|
+
|
|
221
|
+
</li>
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
<li class="public ">
|
|
225
|
+
<span class="summary_signature">
|
|
226
|
+
|
|
227
|
+
<a href="#jsonapi_scope-instance_method" title="#jsonapi_scope (instance method)">#<strong>jsonapi_scope</strong>(scope, opts = {}) ⇒ Scope </a>
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
</span>
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
<span class="summary_desc"><div class='inline'>
|
|
242
|
+
<p>Use when direct, low-level access to the scope is required.</p>
|
|
243
|
+
</div></span>
|
|
244
|
+
|
|
245
|
+
</li>
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
<li class="public ">
|
|
249
|
+
<span class="summary_signature">
|
|
250
|
+
|
|
251
|
+
<a href="#jsonapi_update-instance_method" title="#jsonapi_update (instance method)">#<strong>jsonapi_update</strong> ⇒ Util::ValidationResponse </a>
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
</span>
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
<span class="summary_desc"><div class='inline'>
|
|
266
|
+
<p>Update the resource model and process all nested relationships via the
|
|
267
|
+
serialized parameters.</p>
|
|
268
|
+
</div></span>
|
|
269
|
+
|
|
270
|
+
</li>
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
<li class="public ">
|
|
274
|
+
<span class="summary_signature">
|
|
275
|
+
|
|
276
|
+
<a href="#query-instance_method" title="#query (instance method)">#<strong>query</strong> ⇒ Query </a>
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
</span>
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
<span class="summary_desc"><div class='inline'>
|
|
291
|
+
<p>Instantiates the relevant Query object.</p>
|
|
292
|
+
</div></span>
|
|
293
|
+
|
|
294
|
+
</li>
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
<li class="public ">
|
|
298
|
+
<span class="summary_signature">
|
|
299
|
+
|
|
300
|
+
<a href="#query_hash-instance_method" title="#query_hash (instance method)">#<strong>query_hash</strong> ⇒ Hash </a>
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
</span>
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
<span class="summary_desc"><div class='inline'>
|
|
315
|
+
<p>The normalized query hash for only the <strong>current</strong> resource.</p>
|
|
316
|
+
</div></span>
|
|
317
|
+
|
|
318
|
+
</li>
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
<li class="public ">
|
|
322
|
+
<span class="summary_signature">
|
|
323
|
+
|
|
324
|
+
<a href="#render_jsonapi-instance_method" title="#render_jsonapi (instance method)">#<strong>render_jsonapi</strong>(scope, opts = {}) ⇒ Object </a>
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
</span>
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
<span class="summary_desc"><div class='inline'>
|
|
339
|
+
<p>Similar to <tt>render :json</tt> or <tt>render :jsonapi</tt>.</p>
|
|
340
|
+
</div></span>
|
|
341
|
+
|
|
342
|
+
</li>
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
<li class="public ">
|
|
346
|
+
<span class="summary_signature">
|
|
347
|
+
|
|
348
|
+
<a href="#resource-instance_method" title="#resource (instance method)">#<strong>resource</strong> ⇒ Resource </a>
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
</span>
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
<span class="summary_desc"><div class='inline'>
|
|
363
|
+
<p>Returns an instance of the associated Resource.</p>
|
|
364
|
+
</div></span>
|
|
365
|
+
|
|
366
|
+
</li>
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
<li class="public ">
|
|
370
|
+
<span class="summary_signature">
|
|
371
|
+
|
|
372
|
+
<a href="#wrap_context-instance_method" title="#wrap_context (instance method)">#<strong>wrap_context</strong> ⇒ Object </a>
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
</span>
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
<span class="private note title">private</span>
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
<span class="summary_desc"><div class='inline'>
|
|
387
|
+
<p>Tracks the current context so we can refer to it within any random object.</p>
|
|
388
|
+
</div></span>
|
|
389
|
+
|
|
390
|
+
</li>
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
</ul>
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
<div id="class_method_details" class="method_details_list">
|
|
400
|
+
<h2>Class Method Details</h2>
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
<div class="method_details first">
|
|
404
|
+
<h3 class="signature first" id="jsonapi-class_method">
|
|
405
|
+
|
|
406
|
+
.<strong>jsonapi</strong>(foo = 'bar', resource: nil, &blk) ⇒ <tt>void</tt>
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
</h3><div class="docstring">
|
|
413
|
+
<div class="discussion">
|
|
414
|
+
<p class="note returns_void">This method returns an undefined value.</p>
|
|
415
|
+
<p>Define your JSONAPI configuration</p>
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
</div>
|
|
419
|
+
</div>
|
|
420
|
+
<div class="tags">
|
|
421
|
+
|
|
422
|
+
<div class="examples">
|
|
423
|
+
<p class="tag_title">Examples:</p>
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
<p class="example_title"><div class='inline'>
|
|
427
|
+
<p>Inline Resource</p>
|
|
428
|
+
</div></p>
|
|
429
|
+
|
|
430
|
+
<pre class="example code"><code><span class='comment'># 'Quick and Dirty' solution that does not require a separate
|
|
431
|
+
</span><span class='comment'># Resource object
|
|
432
|
+
</span><span class='kw'>class</span> <span class='const'>PostsController</span> <span class='op'><</span> <span class='const'>ApplicationController</span>
|
|
433
|
+
<span class='id identifier rubyid_jsonapi'>jsonapi</span> <span class='kw'>do</span>
|
|
434
|
+
<span class='id identifier rubyid_type'>type</span> <span class='symbol'>:posts</span>
|
|
435
|
+
<span class='id identifier rubyid_use_adapter'>use_adapter</span> <span class='const'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Adapters.html" title="JsonapiCompliable::Adapters (module)">Adapters</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Adapters/ActiveRecord.html" title="JsonapiCompliable::Adapters::ActiveRecord (class)">ActiveRecord</a></span></span>
|
|
436
|
+
|
|
437
|
+
<span class='id identifier rubyid_allow_filter'>allow_filter</span> <span class='symbol'>:title</span>
|
|
438
|
+
<span class='kw'>end</span>
|
|
439
|
+
<span class='kw'>end</span></code></pre>
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
<p class="example_title"><div class='inline'>
|
|
443
|
+
<p>Resource Class (preferred)</p>
|
|
444
|
+
</div></p>
|
|
445
|
+
|
|
446
|
+
<pre class="example code"><code><span class='comment'># Make code reusable by encapsulating it in a Resource class
|
|
447
|
+
</span><span class='kw'>class</span> <span class='const'>PostsController</span> <span class='op'><</span> <span class='const'>ApplicationController</span>
|
|
448
|
+
<span class='id identifier rubyid_jsonapi'>jsonapi</span> <span class='label'>resource:</span> <span class='const'>PostResource</span>
|
|
449
|
+
<span class='kw'>end</span></code></pre>
|
|
450
|
+
|
|
451
|
+
</div>
|
|
452
|
+
<p class="tag_title">Parameters:</p>
|
|
453
|
+
<ul class="param">
|
|
454
|
+
|
|
455
|
+
<li>
|
|
456
|
+
|
|
457
|
+
<span class='name'>resource</span>
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
<span class='type'>(<tt><span class='object_link'><a href="Resource.html" title="JsonapiCompliable::Resource (class)">Resource</a></span></tt>)</span>
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
—
|
|
465
|
+
<div class='inline'>
|
|
466
|
+
<p>the Resource class associated to this endpoint</p>
|
|
467
|
+
</div>
|
|
468
|
+
|
|
469
|
+
</li>
|
|
470
|
+
|
|
471
|
+
</ul>
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
<p class="tag_title">See Also:</p>
|
|
475
|
+
<ul class="see">
|
|
476
|
+
|
|
477
|
+
<li><span class='object_link'><a href="Resource.html" title="JsonapiCompliable::Resource (class)">Resource</a></span></li>
|
|
478
|
+
|
|
479
|
+
</ul>
|
|
480
|
+
|
|
481
|
+
</div><table class="source_code">
|
|
482
|
+
<tr>
|
|
483
|
+
<td>
|
|
484
|
+
<pre class="lines">
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
44
|
|
488
|
+
45
|
|
489
|
+
46
|
|
490
|
+
47
|
|
491
|
+
48
|
|
492
|
+
49
|
|
493
|
+
50
|
|
494
|
+
51
|
|
495
|
+
52
|
|
496
|
+
53
|
|
497
|
+
54</pre>
|
|
498
|
+
</td>
|
|
499
|
+
<td>
|
|
500
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 44</span>
|
|
501
|
+
|
|
502
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jsonapi'>jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_foo'>foo</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>bar</span><span class='tstring_end'>'</span></span><span class='comma'>,</span> <span class='label'>resource:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span>
|
|
503
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_resource'>resource</span>
|
|
504
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span> <span class='op'>=</span> <span class='id identifier rubyid_resource'>resource</span>
|
|
505
|
+
<span class='kw'>else</span>
|
|
506
|
+
<span class='kw'>if</span> <span class='op'>!</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span>
|
|
507
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span> <span class='op'>=</span> <span class='const'>Class</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Resource.html" title="JsonapiCompliable::Resource (class)">Resource</a></span></span><span class='rparen'>)</span>
|
|
508
|
+
<span class='kw'>end</span>
|
|
509
|
+
<span class='kw'>end</span>
|
|
510
|
+
|
|
511
|
+
<span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span><span class='period'>.</span><span class='id identifier rubyid_class_eval'>class_eval</span><span class='lparen'>(</span><span class='op'>&</span><span class='id identifier rubyid_blk'>blk</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_blk'>blk</span>
|
|
512
|
+
<span class='kw'>end</span></pre>
|
|
513
|
+
</td>
|
|
514
|
+
</tr>
|
|
515
|
+
</table>
|
|
516
|
+
</div>
|
|
517
|
+
|
|
518
|
+
</div>
|
|
519
|
+
|
|
520
|
+
<div id="instance_method_details" class="method_details_list">
|
|
521
|
+
<h2>Instance Method Details</h2>
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
<div class="method_details first">
|
|
525
|
+
<h3 class="signature first" id="default_jsonapi_render_options-instance_method">
|
|
526
|
+
|
|
527
|
+
#<strong>default_jsonapi_render_options</strong> ⇒ <tt>Hash</tt>
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
</h3><div class="docstring">
|
|
534
|
+
<div class="discussion">
|
|
535
|
+
|
|
536
|
+
<p>Define a hash that will be automatically merged into your render_jsonapi
|
|
537
|
+
call</p>
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
</div>
|
|
541
|
+
</div>
|
|
542
|
+
<div class="tags">
|
|
543
|
+
|
|
544
|
+
<div class="examples">
|
|
545
|
+
<p class="tag_title">Examples:</p>
|
|
546
|
+
|
|
547
|
+
|
|
548
|
+
<pre class="example code"><code># this
|
|
549
|
+
render_jsonapi(foo)
|
|
550
|
+
# is equivalent to this
|
|
551
|
+
render jsonapi: foo, default_jsonapi_render_options</code></pre>
|
|
552
|
+
|
|
553
|
+
</div>
|
|
554
|
+
|
|
555
|
+
<p class="tag_title">Returns:</p>
|
|
556
|
+
<ul class="return">
|
|
557
|
+
|
|
558
|
+
<li>
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
—
|
|
566
|
+
<div class='inline'>
|
|
567
|
+
<p>the options hash you define</p>
|
|
568
|
+
</div>
|
|
569
|
+
|
|
570
|
+
</li>
|
|
571
|
+
|
|
572
|
+
</ul>
|
|
573
|
+
|
|
574
|
+
<p class="tag_title">See Also:</p>
|
|
575
|
+
<ul class="see">
|
|
576
|
+
|
|
577
|
+
<li><span class='object_link'><a href="#render_jsonapi-instance_method" title="JsonapiCompliable::Base#render_jsonapi (method)">#render_jsonapi</a></span></li>
|
|
578
|
+
|
|
579
|
+
</ul>
|
|
580
|
+
|
|
581
|
+
</div><table class="source_code">
|
|
582
|
+
<tr>
|
|
583
|
+
<td>
|
|
584
|
+
<pre class="lines">
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
240
|
|
588
|
+
241
|
|
589
|
+
242
|
|
590
|
+
243</pre>
|
|
591
|
+
</td>
|
|
592
|
+
<td>
|
|
593
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 240</span>
|
|
594
|
+
|
|
595
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_default_jsonapi_render_options'>default_jsonapi_render_options</span>
|
|
596
|
+
<span class='lbrace'>{</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_tap'>tap</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_options'>options</span><span class='op'>|</span>
|
|
597
|
+
<span class='kw'>end</span>
|
|
598
|
+
<span class='kw'>end</span></pre>
|
|
599
|
+
</td>
|
|
600
|
+
</tr>
|
|
601
|
+
</table>
|
|
602
|
+
</div>
|
|
603
|
+
|
|
604
|
+
<div class="method_details ">
|
|
605
|
+
<h3 class="signature " id="deserialized_params-instance_method">
|
|
606
|
+
|
|
607
|
+
#<strong>deserialized_params</strong> ⇒ <tt><span class='object_link'><a href="Deserializer.html" title="JsonapiCompliable::Deserializer (class)">Deserializer</a></span></tt>
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
</h3><div class="docstring">
|
|
614
|
+
<div class="discussion">
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
</div>
|
|
618
|
+
</div>
|
|
619
|
+
<div class="tags">
|
|
620
|
+
|
|
621
|
+
<p class="tag_title">Returns:</p>
|
|
622
|
+
<ul class="return">
|
|
623
|
+
|
|
624
|
+
<li>
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
<span class='type'>(<tt><span class='object_link'><a href="Deserializer.html" title="JsonapiCompliable::Deserializer (class)">Deserializer</a></span></tt>)</span>
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
|
|
631
|
+
</li>
|
|
632
|
+
|
|
633
|
+
</ul>
|
|
634
|
+
|
|
635
|
+
<p class="tag_title">See Also:</p>
|
|
636
|
+
<ul class="see">
|
|
637
|
+
|
|
638
|
+
<li><span class='object_link'><a href="Deserializer.html#initialize-instance_method" title="JsonapiCompliable::Deserializer#initialize (method)">Deserializer#initialize</a></span></li>
|
|
639
|
+
|
|
640
|
+
</ul>
|
|
641
|
+
|
|
642
|
+
</div><table class="source_code">
|
|
643
|
+
<tr>
|
|
644
|
+
<td>
|
|
645
|
+
<pre class="lines">
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
121
|
|
649
|
+
122
|
|
650
|
+
123</pre>
|
|
651
|
+
</td>
|
|
652
|
+
<td>
|
|
653
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 121</span>
|
|
654
|
+
|
|
655
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_deserialized_params'>deserialized_params</span>
|
|
656
|
+
<span class='ivar'>@deserialized_params</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Deserializer.html" title="JsonapiCompliable::Deserializer (class)">Deserializer</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Deserializer.html#initialize-instance_method" title="JsonapiCompliable::Deserializer#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_request'>request</span><span class='period'>.</span><span class='id identifier rubyid_env'>env</span><span class='rparen'>)</span>
|
|
657
|
+
<span class='kw'>end</span></pre>
|
|
658
|
+
</td>
|
|
659
|
+
</tr>
|
|
660
|
+
</table>
|
|
661
|
+
</div>
|
|
662
|
+
|
|
663
|
+
<div class="method_details ">
|
|
664
|
+
<h3 class="signature " id="jsonapi_create-instance_method">
|
|
665
|
+
|
|
666
|
+
#<strong>jsonapi_create</strong> ⇒ <tt><span class='object_link'><a href="Util/ValidationResponse.html" title="JsonapiCompliable::Util::ValidationResponse (class)">Util::ValidationResponse</a></span></tt>
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
</h3><div class="docstring">
|
|
673
|
+
<div class="discussion">
|
|
674
|
+
|
|
675
|
+
<p>Create the resource model and process all nested relationships via the
|
|
676
|
+
serialized parameters. Any error, including validation errors, will roll
|
|
677
|
+
back the transaction.</p>
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
</div>
|
|
681
|
+
</div>
|
|
682
|
+
<div class="tags">
|
|
683
|
+
|
|
684
|
+
<div class="examples">
|
|
685
|
+
<p class="tag_title">Examples:</p>
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
<p class="example_title"><div class='inline'>
|
|
689
|
+
<p>Basic Rails</p>
|
|
690
|
+
</div></p>
|
|
691
|
+
|
|
692
|
+
<pre class="example code"><code><span class='comment'># Example Resource must have 'model'
|
|
693
|
+
</span><span class='comment'>#
|
|
694
|
+
</span><span class='comment'># class PostResource < ApplicationResource
|
|
695
|
+
</span><span class='comment'># model Post
|
|
696
|
+
</span><span class='comment'># end
|
|
697
|
+
</span><span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span>
|
|
698
|
+
<span class='id identifier rubyid_post'>post</span><span class='comma'>,</span> <span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_create'>jsonapi_create</span><span class='period'>.</span><span class='id identifier rubyid_to_a'>to_a</span>
|
|
699
|
+
|
|
700
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_success'>success</span>
|
|
701
|
+
<span class='id identifier rubyid_render_jsonapi'>render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_post'>post</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
|
702
|
+
<span class='kw'>else</span>
|
|
703
|
+
<span class='id identifier rubyid_render_errors_for'>render_errors_for</span><span class='lparen'>(</span><span class='id identifier rubyid_post'>post</span><span class='rparen'>)</span>
|
|
704
|
+
<span class='kw'>end</span>
|
|
705
|
+
<span class='kw'>end</span></code></pre>
|
|
706
|
+
|
|
707
|
+
</div>
|
|
708
|
+
|
|
709
|
+
<p class="tag_title">Returns:</p>
|
|
710
|
+
<ul class="return">
|
|
711
|
+
|
|
712
|
+
<li>
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
<span class='type'>(<tt><span class='object_link'><a href="Util/ValidationResponse.html" title="JsonapiCompliable::Util::ValidationResponse (class)">Util::ValidationResponse</a></span></tt>)</span>
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
</li>
|
|
720
|
+
|
|
721
|
+
</ul>
|
|
722
|
+
|
|
723
|
+
<p class="tag_title">See Also:</p>
|
|
724
|
+
<ul class="see">
|
|
725
|
+
|
|
726
|
+
<li><span class='object_link'><a href="Resource.html#model-class_method" title="JsonapiCompliable::Resource.model (method)">Resource.model</a></span></li>
|
|
727
|
+
|
|
728
|
+
<li><span class='object_link'><a href="#resource-instance_method" title="JsonapiCompliable::Base#resource (method)">#resource</a></span></li>
|
|
729
|
+
|
|
730
|
+
<li><span class='object_link'><a href="#deserialized_params-instance_method" title="JsonapiCompliable::Base#deserialized_params (method)">#deserialized_params</a></span></li>
|
|
731
|
+
|
|
732
|
+
</ul>
|
|
733
|
+
|
|
734
|
+
</div><table class="source_code">
|
|
735
|
+
<tr>
|
|
736
|
+
<td>
|
|
737
|
+
<pre class="lines">
|
|
738
|
+
|
|
739
|
+
|
|
740
|
+
149
|
|
741
|
+
150
|
|
742
|
+
151
|
|
743
|
+
152
|
|
744
|
+
153
|
|
745
|
+
154
|
|
746
|
+
155
|
|
747
|
+
156</pre>
|
|
748
|
+
</td>
|
|
749
|
+
<td>
|
|
750
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 149</span>
|
|
751
|
+
|
|
752
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jsonapi_create'>jsonapi_create</span>
|
|
753
|
+
<span class='id identifier rubyid__persist'>_persist</span> <span class='kw'>do</span>
|
|
754
|
+
<span class='id identifier rubyid_resource'>resource</span><span class='period'>.</span><span class='id identifier rubyid_persist_with_relationships'>persist_with_relationships</span> \
|
|
755
|
+
<span class='id identifier rubyid_deserialized_params'>deserialized_params</span><span class='period'>.</span><span class='id identifier rubyid_meta'>meta</span><span class='comma'>,</span>
|
|
756
|
+
<span class='id identifier rubyid_deserialized_params'>deserialized_params</span><span class='period'>.</span><span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span>
|
|
757
|
+
<span class='id identifier rubyid_deserialized_params'>deserialized_params</span><span class='period'>.</span><span class='id identifier rubyid_relationships'>relationships</span>
|
|
758
|
+
<span class='kw'>end</span>
|
|
759
|
+
<span class='kw'>end</span></pre>
|
|
760
|
+
</td>
|
|
761
|
+
</tr>
|
|
762
|
+
</table>
|
|
763
|
+
</div>
|
|
764
|
+
|
|
765
|
+
<div class="method_details ">
|
|
766
|
+
<h3 class="signature " id="jsonapi_scope-instance_method">
|
|
767
|
+
|
|
768
|
+
#<strong>jsonapi_scope</strong>(scope, opts = {}) ⇒ <tt><span class='object_link'><a href="Scope.html" title="JsonapiCompliable::Scope (class)">Scope</a></span></tt>
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
</h3><div class="docstring">
|
|
775
|
+
<div class="discussion">
|
|
776
|
+
|
|
777
|
+
<p>Use when direct, low-level access to the scope is required.</p>
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
</div>
|
|
781
|
+
</div>
|
|
782
|
+
<div class="tags">
|
|
783
|
+
|
|
784
|
+
<div class="examples">
|
|
785
|
+
<p class="tag_title">Examples:</p>
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
<p class="example_title"><div class='inline'>
|
|
789
|
+
<p>Show Action</p>
|
|
790
|
+
</div></p>
|
|
791
|
+
|
|
792
|
+
<pre class="example code"><code><span class='comment'># Scope#resolve returns an array, but we only want to render
|
|
793
|
+
</span><span class='comment'># one object, not an array
|
|
794
|
+
</span><span class='id identifier rubyid_scope'>scope</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='const'>Employee</span><span class='period'>.</span><span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='label'>id:</span> <span class='id identifier rubyid_params'>params</span><span class='lbracket'>[</span><span class='symbol'>:id</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
795
|
+
<span class='id identifier rubyid_render_jsonapi'>render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_resolve'>resolve</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>false</span><span class='rparen'>)</span></code></pre>
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
<p class="example_title"><div class='inline'>
|
|
799
|
+
<p>Scope Chaining</p>
|
|
800
|
+
</div></p>
|
|
801
|
+
|
|
802
|
+
<pre class="example code"><code><span class='comment'># Chain onto scope after running through typical DSL
|
|
803
|
+
</span><span class='comment'># Here, we'll add active: true to our hash if the user
|
|
804
|
+
</span><span class='comment'># is filtering on something
|
|
805
|
+
</span><span class='id identifier rubyid_scope'>scope</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
|
806
|
+
<span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_object'>object</span><span class='period'>.</span><span class='id identifier rubyid_merge!'>merge!</span><span class='lparen'>(</span><span class='label'>active:</span> <span class='kw'>true</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_object'>object</span><span class='lbracket'>[</span><span class='symbol'>:filter</span><span class='rbracket'>]</span></code></pre>
|
|
807
|
+
|
|
808
|
+
</div>
|
|
809
|
+
|
|
810
|
+
<p class="tag_title">Returns:</p>
|
|
811
|
+
<ul class="return">
|
|
812
|
+
|
|
813
|
+
<li>
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
<span class='type'>(<tt><span class='object_link'><a href="Scope.html" title="JsonapiCompliable::Scope (class)">Scope</a></span></tt>)</span>
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
—
|
|
821
|
+
<div class='inline'>
|
|
822
|
+
<p>the configured scope</p>
|
|
823
|
+
</div>
|
|
824
|
+
|
|
825
|
+
</li>
|
|
826
|
+
|
|
827
|
+
</ul>
|
|
828
|
+
|
|
829
|
+
<p class="tag_title">See Also:</p>
|
|
830
|
+
<ul class="see">
|
|
831
|
+
|
|
832
|
+
<li><span class='object_link'><a href="Resource.html#build_scope-instance_method" title="JsonapiCompliable::Resource#build_scope (method)">Resource#build_scope</a></span></li>
|
|
833
|
+
|
|
834
|
+
</ul>
|
|
835
|
+
|
|
836
|
+
</div><table class="source_code">
|
|
837
|
+
<tr>
|
|
838
|
+
<td>
|
|
839
|
+
<pre class="lines">
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
115
|
|
843
|
+
116
|
|
844
|
+
117</pre>
|
|
845
|
+
</td>
|
|
846
|
+
<td>
|
|
847
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 115</span>
|
|
848
|
+
|
|
849
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
|
850
|
+
<span class='id identifier rubyid_resource'>resource</span><span class='period'>.</span><span class='id identifier rubyid_build_scope'>build_scope</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
|
851
|
+
<span class='kw'>end</span></pre>
|
|
852
|
+
</td>
|
|
853
|
+
</tr>
|
|
854
|
+
</table>
|
|
855
|
+
</div>
|
|
856
|
+
|
|
857
|
+
<div class="method_details ">
|
|
858
|
+
<h3 class="signature " id="jsonapi_update-instance_method">
|
|
859
|
+
|
|
860
|
+
#<strong>jsonapi_update</strong> ⇒ <tt><span class='object_link'><a href="Util/ValidationResponse.html" title="JsonapiCompliable::Util::ValidationResponse (class)">Util::ValidationResponse</a></span></tt>
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
</h3><div class="docstring">
|
|
867
|
+
<div class="discussion">
|
|
868
|
+
|
|
869
|
+
<p>Update the resource model and process all nested relationships via the
|
|
870
|
+
serialized parameters. Any error, including validation errors, will roll
|
|
871
|
+
back the transaction.</p>
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
</div>
|
|
875
|
+
</div>
|
|
876
|
+
<div class="tags">
|
|
877
|
+
|
|
878
|
+
<div class="examples">
|
|
879
|
+
<p class="tag_title">Examples:</p>
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
<p class="example_title"><div class='inline'>
|
|
883
|
+
<p>Basic Rails</p>
|
|
884
|
+
</div></p>
|
|
885
|
+
|
|
886
|
+
<pre class="example code"><code><span class='comment'># Example Resource must have 'model'
|
|
887
|
+
</span><span class='comment'>#
|
|
888
|
+
</span><span class='comment'># class PostResource < ApplicationResource
|
|
889
|
+
</span><span class='comment'># model Post
|
|
890
|
+
</span><span class='comment'># end
|
|
891
|
+
</span><span class='kw'>def</span> <span class='id identifier rubyid_update'>update</span>
|
|
892
|
+
<span class='id identifier rubyid_post'>post</span><span class='comma'>,</span> <span class='id identifier rubyid_success'>success</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_update'>jsonapi_update</span><span class='period'>.</span><span class='id identifier rubyid_to_a'>to_a</span>
|
|
893
|
+
|
|
894
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_success'>success</span>
|
|
895
|
+
<span class='id identifier rubyid_render_jsonapi'>render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_post'>post</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
|
896
|
+
<span class='kw'>else</span>
|
|
897
|
+
<span class='id identifier rubyid_render_errors_for'>render_errors_for</span><span class='lparen'>(</span><span class='id identifier rubyid_post'>post</span><span class='rparen'>)</span>
|
|
898
|
+
<span class='kw'>end</span>
|
|
899
|
+
<span class='kw'>end</span></code></pre>
|
|
900
|
+
|
|
901
|
+
</div>
|
|
902
|
+
|
|
903
|
+
<p class="tag_title">Returns:</p>
|
|
904
|
+
<ul class="return">
|
|
905
|
+
|
|
906
|
+
<li>
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
<span class='type'>(<tt><span class='object_link'><a href="Util/ValidationResponse.html" title="JsonapiCompliable::Util::ValidationResponse (class)">Util::ValidationResponse</a></span></tt>)</span>
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
</li>
|
|
914
|
+
|
|
915
|
+
</ul>
|
|
916
|
+
|
|
917
|
+
<p class="tag_title">See Also:</p>
|
|
918
|
+
<ul class="see">
|
|
919
|
+
|
|
920
|
+
<li><span class='object_link'><a href="#jsonapi_create-instance_method" title="JsonapiCompliable::Base#jsonapi_create (method)">#jsonapi_create</a></span></li>
|
|
921
|
+
|
|
922
|
+
</ul>
|
|
923
|
+
|
|
924
|
+
</div><table class="source_code">
|
|
925
|
+
<tr>
|
|
926
|
+
<td>
|
|
927
|
+
<pre class="lines">
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
180
|
|
931
|
+
181
|
|
932
|
+
182
|
|
933
|
+
183
|
|
934
|
+
184
|
|
935
|
+
185
|
|
936
|
+
186
|
|
937
|
+
187</pre>
|
|
938
|
+
</td>
|
|
939
|
+
<td>
|
|
940
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 180</span>
|
|
941
|
+
|
|
942
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_jsonapi_update'>jsonapi_update</span>
|
|
943
|
+
<span class='id identifier rubyid__persist'>_persist</span> <span class='kw'>do</span>
|
|
944
|
+
<span class='id identifier rubyid_resource'>resource</span><span class='period'>.</span><span class='id identifier rubyid_persist_with_relationships'>persist_with_relationships</span> \
|
|
945
|
+
<span class='id identifier rubyid_deserialized_params'>deserialized_params</span><span class='period'>.</span><span class='id identifier rubyid_meta'>meta</span><span class='comma'>,</span>
|
|
946
|
+
<span class='id identifier rubyid_deserialized_params'>deserialized_params</span><span class='period'>.</span><span class='id identifier rubyid_attributes'>attributes</span><span class='comma'>,</span>
|
|
947
|
+
<span class='id identifier rubyid_deserialized_params'>deserialized_params</span><span class='period'>.</span><span class='id identifier rubyid_relationships'>relationships</span>
|
|
948
|
+
<span class='kw'>end</span>
|
|
949
|
+
<span class='kw'>end</span></pre>
|
|
950
|
+
</td>
|
|
951
|
+
</tr>
|
|
952
|
+
</table>
|
|
953
|
+
</div>
|
|
954
|
+
|
|
955
|
+
<div class="method_details ">
|
|
956
|
+
<h3 class="signature " id="query-instance_method">
|
|
957
|
+
|
|
958
|
+
#<strong>query</strong> ⇒ <tt><span class='object_link'><a href="Query.html" title="JsonapiCompliable::Query (class)">Query</a></span></tt>
|
|
959
|
+
|
|
960
|
+
|
|
961
|
+
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
</h3><div class="docstring">
|
|
965
|
+
<div class="discussion">
|
|
966
|
+
|
|
967
|
+
<p>Instantiates the relevant Query object</p>
|
|
968
|
+
|
|
969
|
+
|
|
970
|
+
</div>
|
|
971
|
+
</div>
|
|
972
|
+
<div class="tags">
|
|
973
|
+
|
|
974
|
+
<p class="tag_title">Returns:</p>
|
|
975
|
+
<ul class="return">
|
|
976
|
+
|
|
977
|
+
<li>
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
<span class='type'>(<tt><span class='object_link'><a href="Query.html" title="JsonapiCompliable::Query (class)">Query</a></span></tt>)</span>
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
—
|
|
985
|
+
<div class='inline'>
|
|
986
|
+
<p>the Query object for this resource/params</p>
|
|
987
|
+
</div>
|
|
988
|
+
|
|
989
|
+
</li>
|
|
990
|
+
|
|
991
|
+
</ul>
|
|
992
|
+
|
|
993
|
+
<p class="tag_title">See Also:</p>
|
|
994
|
+
<ul class="see">
|
|
995
|
+
|
|
996
|
+
<li><span class='object_link'><a href="Query.html" title="JsonapiCompliable::Query (class)">Query</a></span></li>
|
|
997
|
+
|
|
998
|
+
</ul>
|
|
999
|
+
|
|
1000
|
+
</div><table class="source_code">
|
|
1001
|
+
<tr>
|
|
1002
|
+
<td>
|
|
1003
|
+
<pre class="lines">
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
74
|
|
1007
|
+
75
|
|
1008
|
+
76</pre>
|
|
1009
|
+
</td>
|
|
1010
|
+
<td>
|
|
1011
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 74</span>
|
|
1012
|
+
|
|
1013
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_query'>query</span>
|
|
1014
|
+
<span class='ivar'>@query</span> <span class='op'>||=</span> <span class='const'><span class='object_link'><a href="Query.html" title="JsonapiCompliable::Query (class)">Query</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Query.html#initialize-instance_method" title="JsonapiCompliable::Query#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_resource'>resource</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span>
|
|
1015
|
+
<span class='kw'>end</span></pre>
|
|
1016
|
+
</td>
|
|
1017
|
+
</tr>
|
|
1018
|
+
</table>
|
|
1019
|
+
</div>
|
|
1020
|
+
|
|
1021
|
+
<div class="method_details ">
|
|
1022
|
+
<h3 class="signature " id="query_hash-instance_method">
|
|
1023
|
+
|
|
1024
|
+
#<strong>query_hash</strong> ⇒ <tt>Hash</tt>
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
</h3><div class="docstring">
|
|
1031
|
+
<div class="discussion">
|
|
1032
|
+
|
|
1033
|
+
<p>Returns the normalized query hash for only the <strong>current</strong>
|
|
1034
|
+
resource</p>
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
</div>
|
|
1038
|
+
</div>
|
|
1039
|
+
<div class="tags">
|
|
1040
|
+
|
|
1041
|
+
<p class="tag_title">Returns:</p>
|
|
1042
|
+
<ul class="return">
|
|
1043
|
+
|
|
1044
|
+
<li>
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
—
|
|
1052
|
+
<div class='inline'>
|
|
1053
|
+
<p>the normalized query hash for only the <strong>current</strong> resource</p>
|
|
1054
|
+
</div>
|
|
1055
|
+
|
|
1056
|
+
</li>
|
|
1057
|
+
|
|
1058
|
+
</ul>
|
|
1059
|
+
|
|
1060
|
+
<p class="tag_title">See Also:</p>
|
|
1061
|
+
<ul class="see">
|
|
1062
|
+
|
|
1063
|
+
<li><span class='object_link'><a href="Query.html#to_hash-instance_method" title="JsonapiCompliable::Query#to_hash (method)">Query#to_hash</a></span></li>
|
|
1064
|
+
|
|
1065
|
+
</ul>
|
|
1066
|
+
|
|
1067
|
+
</div><table class="source_code">
|
|
1068
|
+
<tr>
|
|
1069
|
+
<td>
|
|
1070
|
+
<pre class="lines">
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
80
|
|
1074
|
+
81
|
|
1075
|
+
82</pre>
|
|
1076
|
+
</td>
|
|
1077
|
+
<td>
|
|
1078
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 80</span>
|
|
1079
|
+
|
|
1080
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_query_hash'>query_hash</span>
|
|
1081
|
+
<span class='ivar'>@query_hash</span> <span class='op'>||=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_to_hash'>to_hash</span><span class='lbracket'>[</span><span class='id identifier rubyid_resource'>resource</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='rbracket'>]</span>
|
|
1082
|
+
<span class='kw'>end</span></pre>
|
|
1083
|
+
</td>
|
|
1084
|
+
</tr>
|
|
1085
|
+
</table>
|
|
1086
|
+
</div>
|
|
1087
|
+
|
|
1088
|
+
<div class="method_details ">
|
|
1089
|
+
<h3 class="signature " id="render_jsonapi-instance_method">
|
|
1090
|
+
|
|
1091
|
+
#<strong>render_jsonapi</strong>(scope, opts = {}) ⇒ <tt>Object</tt>
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
</h3><div class="docstring">
|
|
1098
|
+
<div class="discussion">
|
|
1099
|
+
|
|
1100
|
+
<p>Similar to <tt>render :json</tt> or <tt>render :jsonapi</tt></p>
|
|
1101
|
+
|
|
1102
|
+
<p>By default, this will “build” the scope via <code>#jsonapi_scope</code>. To
|
|
1103
|
+
avoid this, pass <tt>scope: false</tt></p>
|
|
1104
|
+
|
|
1105
|
+
<p>This builds relevant options and sends them to
|
|
1106
|
+
<tt>JSONAPI::Serializable::Renderer.render</tt>from <a href="http://jsonapi-rb.org" target="_parent" title="jsonapi-rb">jsonapi-rb</a></p>
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
</div>
|
|
1110
|
+
</div>
|
|
1111
|
+
<div class="tags">
|
|
1112
|
+
|
|
1113
|
+
<div class="examples">
|
|
1114
|
+
<p class="tag_title">Examples:</p>
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
<p class="example_title"><div class='inline'>
|
|
1118
|
+
<p>Build Scope by Default</p>
|
|
1119
|
+
</div></p>
|
|
1120
|
+
|
|
1121
|
+
<pre class="example code"><code><span class='comment'># Employee.all returns an ActiveRecord::Relation. No SQL is fired at this point.
|
|
1122
|
+
</span><span class='comment'># We further 'chain' onto this scope, applying pagination, sorting,
|
|
1123
|
+
</span><span class='comment'># filters, etc that the user has requested.
|
|
1124
|
+
</span><span class='kw'>def</span> <span class='id identifier rubyid_index'>index</span>
|
|
1125
|
+
<span class='id identifier rubyid_employees'>employees</span> <span class='op'>=</span> <span class='const'>Employee</span><span class='period'>.</span><span class='id identifier rubyid_all'>all</span>
|
|
1126
|
+
<span class='id identifier rubyid_render_jsonapi'>render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_employees'>employees</span><span class='rparen'>)</span>
|
|
1127
|
+
<span class='kw'>end</span></code></pre>
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
<p class="example_title"><div class='inline'>
|
|
1131
|
+
<p>Avoid Building Scope by Default</p>
|
|
1132
|
+
</div></p>
|
|
1133
|
+
|
|
1134
|
+
<pre class="example code"><code><span class='comment'># Maybe we already manually scoped, and don't want to fire the logic twice
|
|
1135
|
+
</span><span class='comment'># This code is equivalent to the above example
|
|
1136
|
+
</span><span class='kw'>def</span> <span class='id identifier rubyid_index'>index</span>
|
|
1137
|
+
<span class='id identifier rubyid_scope'>scope</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='const'>Employee</span><span class='period'>.</span><span class='id identifier rubyid_all'>all</span><span class='rparen'>)</span>
|
|
1138
|
+
<span class='comment'># ... do other things with the scope ...
|
|
1139
|
+
</span> <span class='id identifier rubyid_render_jsonapi'>render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_resolve'>resolve</span><span class='comma'>,</span> <span class='label'>scope:</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
|
1140
|
+
<span class='kw'>end</span></code></pre>
|
|
1141
|
+
|
|
1142
|
+
</div>
|
|
1143
|
+
<p class="tag_title">Parameters:</p>
|
|
1144
|
+
<ul class="param">
|
|
1145
|
+
|
|
1146
|
+
<li>
|
|
1147
|
+
|
|
1148
|
+
<span class='name'>scope</span>
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
<span class='type'>(<tt><span class='object_link'><a href="Scope.html" title="JsonapiCompliable::Scope (class)">Scope</a></span></tt>, <tt>Object</tt>)</span>
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
—
|
|
1156
|
+
<div class='inline'>
|
|
1157
|
+
<p>the scope to build or render.</p>
|
|
1158
|
+
</div>
|
|
1159
|
+
|
|
1160
|
+
</li>
|
|
1161
|
+
|
|
1162
|
+
<li>
|
|
1163
|
+
|
|
1164
|
+
<span class='name'>opts</span>
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
1168
|
+
|
|
1169
|
+
|
|
1170
|
+
<em class="default">(defaults to: <tt>{}</tt>)</em>
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
—
|
|
1174
|
+
<div class='inline'>
|
|
1175
|
+
<p>the render options passed to <a href="http://jsonapi-rb.org" target="_parent" title="jsonapi-rb">jsonapi-rb</a></p>
|
|
1176
|
+
</div>
|
|
1177
|
+
|
|
1178
|
+
</li>
|
|
1179
|
+
|
|
1180
|
+
</ul>
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
<p class="tag_title">Options Hash (<tt>opts</tt>):</p>
|
|
1188
|
+
<ul class="option">
|
|
1189
|
+
|
|
1190
|
+
<li>
|
|
1191
|
+
<span class="name">:scope</span>
|
|
1192
|
+
<span class="type">(<tt>Boolean</tt>)</span>
|
|
1193
|
+
<span class="default">
|
|
1194
|
+
|
|
1195
|
+
</span>
|
|
1196
|
+
|
|
1197
|
+
— <div class='inline'>
|
|
1198
|
+
<p>Default: true. Should we call #jsonapi_scope on this object?</p>
|
|
1199
|
+
</div>
|
|
1200
|
+
|
|
1201
|
+
</li>
|
|
1202
|
+
|
|
1203
|
+
</ul>
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
<p class="tag_title">See Also:</p>
|
|
1208
|
+
<ul class="see">
|
|
1209
|
+
|
|
1210
|
+
<li><span class='object_link'><a href="#jsonapi_scope-instance_method" title="JsonapiCompliable::Base#jsonapi_scope (method)">#jsonapi_scope</a></span></li>
|
|
1211
|
+
|
|
1212
|
+
</ul>
|
|
1213
|
+
|
|
1214
|
+
</div><table class="source_code">
|
|
1215
|
+
<tr>
|
|
1216
|
+
<td>
|
|
1217
|
+
<pre class="lines">
|
|
1218
|
+
|
|
1219
|
+
|
|
1220
|
+
220
|
|
1221
|
+
221
|
|
1222
|
+
222
|
|
1223
|
+
223
|
|
1224
|
+
224
|
|
1225
|
+
225
|
|
1226
|
+
226
|
|
1227
|
+
227</pre>
|
|
1228
|
+
</td>
|
|
1229
|
+
<td>
|
|
1230
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 220</span>
|
|
1231
|
+
|
|
1232
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_render_jsonapi'>render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
|
|
1233
|
+
<span class='id identifier rubyid_scope'>scope</span> <span class='op'>=</span> <span class='id identifier rubyid_jsonapi_scope'>jsonapi_scope</span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:scope</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>false</span> <span class='op'>||</span> <span class='id identifier rubyid_scope'>scope</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="../JsonapiCompliable.html" title="JsonapiCompliable (module)">JsonapiCompliable</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Scope.html" title="JsonapiCompliable::Scope (class)">Scope</a></span></span><span class='rparen'>)</span>
|
|
1234
|
+
<span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='id identifier rubyid_default_jsonapi_render_options'>default_jsonapi_render_options</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
|
1235
|
+
<span class='id identifier rubyid_opts'>opts</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Util.html" title="JsonapiCompliable::Util (module)">Util</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Util/RenderOptions.html" title="JsonapiCompliable::Util::RenderOptions (class)">RenderOptions</a></span></span><span class='period'>.</span><span class='id identifier rubyid_generate'><span class='object_link'><a href="Util/RenderOptions.html#generate-class_method" title="JsonapiCompliable::Util::RenderOptions.generate (method)">generate</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_scope'>scope</span><span class='comma'>,</span> <span class='id identifier rubyid_query_hash'>query_hash</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
|
1236
|
+
<span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:expose</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='symbol'>:context</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='kw'>self</span>
|
|
1237
|
+
<span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:include</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_deserialized_params'>deserialized_params</span><span class='period'>.</span><span class='id identifier rubyid_include_directive'>include_directive</span> <span class='kw'>if</span> <span class='id identifier rubyid_force_includes?'>force_includes?</span>
|
|
1238
|
+
<span class='id identifier rubyid_perform_render_jsonapi'>perform_render_jsonapi</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='rparen'>)</span>
|
|
1239
|
+
<span class='kw'>end</span></pre>
|
|
1240
|
+
</td>
|
|
1241
|
+
</tr>
|
|
1242
|
+
</table>
|
|
1243
|
+
</div>
|
|
1244
|
+
|
|
1245
|
+
<div class="method_details ">
|
|
1246
|
+
<h3 class="signature " id="resource-instance_method">
|
|
1247
|
+
|
|
1248
|
+
#<strong>resource</strong> ⇒ <tt><span class='object_link'><a href="Resource.html" title="JsonapiCompliable::Resource (class)">Resource</a></span></tt>
|
|
1249
|
+
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
|
|
1253
|
+
|
|
1254
|
+
</h3><div class="docstring">
|
|
1255
|
+
<div class="discussion">
|
|
1256
|
+
|
|
1257
|
+
<p>Returns an instance of the associated Resource</p>
|
|
1258
|
+
|
|
1259
|
+
<p>In other words, if you configured your controller as:</p>
|
|
1260
|
+
|
|
1261
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_jsonapi'>jsonapi</span> <span class='label'>resource:</span> <span class='const'>MyResource</span>
|
|
1262
|
+
</code></pre>
|
|
1263
|
+
|
|
1264
|
+
<p>This returns MyResource.new</p>
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
</div>
|
|
1268
|
+
</div>
|
|
1269
|
+
<div class="tags">
|
|
1270
|
+
|
|
1271
|
+
<p class="tag_title">Returns:</p>
|
|
1272
|
+
<ul class="return">
|
|
1273
|
+
|
|
1274
|
+
<li>
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
<span class='type'>(<tt><span class='object_link'><a href="Resource.html" title="JsonapiCompliable::Resource (class)">Resource</a></span></tt>)</span>
|
|
1278
|
+
|
|
1279
|
+
|
|
1280
|
+
|
|
1281
|
+
—
|
|
1282
|
+
<div class='inline'>
|
|
1283
|
+
<p>the configured Resource for this controller</p>
|
|
1284
|
+
</div>
|
|
1285
|
+
|
|
1286
|
+
</li>
|
|
1287
|
+
|
|
1288
|
+
</ul>
|
|
1289
|
+
|
|
1290
|
+
</div><table class="source_code">
|
|
1291
|
+
<tr>
|
|
1292
|
+
<td>
|
|
1293
|
+
<pre class="lines">
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
66
|
|
1297
|
+
67
|
|
1298
|
+
68</pre>
|
|
1299
|
+
</td>
|
|
1300
|
+
<td>
|
|
1301
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 66</span>
|
|
1302
|
+
|
|
1303
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_resource'>resource</span>
|
|
1304
|
+
<span class='ivar'>@resource</span> <span class='op'>||=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
|
1305
|
+
<span class='kw'>end</span></pre>
|
|
1306
|
+
</td>
|
|
1307
|
+
</tr>
|
|
1308
|
+
</table>
|
|
1309
|
+
</div>
|
|
1310
|
+
|
|
1311
|
+
<div class="method_details ">
|
|
1312
|
+
<h3 class="signature " id="wrap_context-instance_method">
|
|
1313
|
+
|
|
1314
|
+
#<strong>wrap_context</strong> ⇒ <tt>Object</tt>
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
</h3><div class="docstring">
|
|
1321
|
+
<div class="discussion">
|
|
1322
|
+
<p class="note private">
|
|
1323
|
+
<strong>This method is part of a private API.</strong>
|
|
1324
|
+
You should avoid using this method if possible, as it may be removed or be changed in the future.
|
|
1325
|
+
</p>
|
|
1326
|
+
|
|
1327
|
+
<p>Tracks the current context so we can refer to it within any random object.
|
|
1328
|
+
Helpful for easy-access to things like the current user.</p>
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
</div>
|
|
1332
|
+
</div>
|
|
1333
|
+
<div class="tags">
|
|
1334
|
+
|
|
1335
|
+
<p class="tag_title">Yield Returns:</p>
|
|
1336
|
+
<ul class="yieldreturn">
|
|
1337
|
+
|
|
1338
|
+
<li>
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
<span class='type'></span>
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
<div class='inline'>
|
|
1347
|
+
<p>Code to run within the current context</p>
|
|
1348
|
+
</div>
|
|
1349
|
+
|
|
1350
|
+
</li>
|
|
1351
|
+
|
|
1352
|
+
</ul>
|
|
1353
|
+
|
|
1354
|
+
</div><table class="source_code">
|
|
1355
|
+
<tr>
|
|
1356
|
+
<td>
|
|
1357
|
+
<pre class="lines">
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
90
|
|
1361
|
+
91
|
|
1362
|
+
92
|
|
1363
|
+
93
|
|
1364
|
+
94
|
|
1365
|
+
95
|
|
1366
|
+
96</pre>
|
|
1367
|
+
</td>
|
|
1368
|
+
<td>
|
|
1369
|
+
<pre class="code"><span class="info file"># File 'lib/jsonapi_compliable/base.rb', line 90</span>
|
|
1370
|
+
|
|
1371
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_wrap_context'>wrap_context</span>
|
|
1372
|
+
<span class='kw'>if</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid__jsonapi_compliable'>_jsonapi_compliable</span>
|
|
1373
|
+
<span class='id identifier rubyid_resource'>resource</span><span class='period'>.</span><span class='id identifier rubyid_with_context'>with_context</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_action_name'>action_name</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rparen'>)</span> <span class='kw'>do</span>
|
|
1374
|
+
<span class='kw'>yield</span>
|
|
1375
|
+
<span class='kw'>end</span>
|
|
1376
|
+
<span class='kw'>end</span>
|
|
1377
|
+
<span class='kw'>end</span></pre>
|
|
1378
|
+
</td>
|
|
1379
|
+
</tr>
|
|
1380
|
+
</table>
|
|
1381
|
+
</div>
|
|
1382
|
+
|
|
1383
|
+
</div>
|
|
1384
|
+
|
|
1385
|
+
</div>
|
|
1386
|
+
|
|
1387
|
+
<div id="footer">
|
|
1388
|
+
Generated on Fri May 5 15:53:21 2017 by
|
|
1389
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1390
|
+
0.9.9 (ruby-2.3.0).
|
|
1391
|
+
</div>
|
|
1392
|
+
|
|
1393
|
+
</div>
|
|
1394
|
+
</body>
|
|
1395
|
+
</html>
|