activerecord-hashlike_access 0.1.1 → 0.2.0
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/Gemfile.lock +2 -2
- data/README.md +9 -1
- data/docs/ActiveRecord/HashlikeAccess.html +810 -0
- data/docs/ActiveRecord.html +122 -0
- data/docs/_index.html +139 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +206 -0
- data/docs/css/style.css +1089 -0
- data/docs/file.README.html +289 -0
- data/docs/file_list.html +59 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +289 -0
- data/docs/js/app.js +801 -0
- data/docs/js/full_list.js +334 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +102 -0
- data/docs/top-level-namespace.html +112 -0
- data/lib/active_record/hashlike_access/auto_extend.rb +6 -0
- data/lib/active_record/hashlike_access/version.rb +1 -1
- metadata +18 -1
|
@@ -0,0 +1,810 @@
|
|
|
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: ActiveRecord::HashlikeAccess
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.9.45
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css">
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css">
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript">
|
|
18
|
+
pathId = "ActiveRecord::HashlikeAccess";
|
|
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 id="main_progress" aria-hidden="true"></div>
|
|
31
|
+
|
|
32
|
+
<div class="nav_wrap">
|
|
33
|
+
<iframe id="nav" src="../class_list.html?1"></iframe>
|
|
34
|
+
<div id="resizer"></div>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<div id="main" tabindex="-1">
|
|
38
|
+
<div id="header">
|
|
39
|
+
<div id="menu">
|
|
40
|
+
|
|
41
|
+
<a href="../_index.html">Index (H)</a> »
|
|
42
|
+
<span class='title'><span class='object_link'><a href="../ActiveRecord.html" title="ActiveRecord (module)">ActiveRecord</a></span></span>
|
|
43
|
+
»
|
|
44
|
+
<span class="title">HashlikeAccess</span>
|
|
45
|
+
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div id="search">
|
|
49
|
+
|
|
50
|
+
<a class="full_list_link" id="class_list_link"
|
|
51
|
+
href="../class_list.html">
|
|
52
|
+
|
|
53
|
+
<svg width="24" height="24">
|
|
54
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
|
55
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
|
56
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
|
57
|
+
</svg>
|
|
58
|
+
</a>
|
|
59
|
+
|
|
60
|
+
</div>
|
|
61
|
+
<div class="clear"></div>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<div id="content"><h1>Module: ActiveRecord::HashlikeAccess
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
</h1>
|
|
69
|
+
<div class="box_info">
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
<dl>
|
|
80
|
+
<dt>Included in:</dt>
|
|
81
|
+
<dd><span class='object_link'><a href="Base.html" title="ActiveRecord::Base (class)">Base</a></span></dd>
|
|
82
|
+
</dl>
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
<dl>
|
|
87
|
+
<dt>Defined in:</dt>
|
|
88
|
+
<dd>lib/active_record/hashlike_access.rb<span class="defines">,<br>
|
|
89
|
+
lib/active_record/hashlike_access/version.rb</span>
|
|
90
|
+
|
|
91
|
+
</dd>
|
|
92
|
+
</dl>
|
|
93
|
+
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<h2>Overview</h2><div class="docstring">
|
|
97
|
+
<div class="discussion">
|
|
98
|
+
<p>The HashlikeAccess module simplifies querying for model records by providing
|
|
99
|
+
<code>find_by</code>-equivalent access to records (or their values) via bracket syntax.</p>
|
|
100
|
+
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="tags">
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<h2>
|
|
109
|
+
Constant Summary
|
|
110
|
+
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
|
111
|
+
</h2>
|
|
112
|
+
|
|
113
|
+
<dl class="constants">
|
|
114
|
+
|
|
115
|
+
<dt id="VERSION-constant" class="">VERSION =
|
|
116
|
+
|
|
117
|
+
</dt>
|
|
118
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0.2.0</span><span class='tstring_end'>'</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
|
119
|
+
|
|
120
|
+
</dl>
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
<h2>
|
|
131
|
+
Instance Method Summary
|
|
132
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
|
133
|
+
</h2>
|
|
134
|
+
|
|
135
|
+
<ul class="summary">
|
|
136
|
+
|
|
137
|
+
<li class="public ">
|
|
138
|
+
<span class="summary_signature">
|
|
139
|
+
|
|
140
|
+
<a href="#[]-instance_method" title="#[] (instance method)">#<strong>[]</strong> ⇒ Object </a>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
</span>
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
<span class="summary_desc"><div class='inline'><p>Finds a record by the previously-configured "lookup_fields" and calls the requested "response_method" on it.</p></div></span>
|
|
155
|
+
|
|
156
|
+
</li>
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
<li class="public ">
|
|
160
|
+
<span class="summary_signature">
|
|
161
|
+
|
|
162
|
+
<a href="#[]=-instance_method" title="#[]= (instance method)">#<strong>[]=</strong>(*args) ⇒ Object </a>
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
</span>
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
<span class="summary_desc"><div class='inline'><p>Finds a record (as in <span class='object_link'><a href="#[]-instance_method" title="ActiveRecord::HashlikeAccess#[] (method)">#[]</a></span>), and calls the "assignment_method" with the remaining param.</p></div></span>
|
|
177
|
+
|
|
178
|
+
</li>
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
<li class="private ">
|
|
182
|
+
<span class="summary_signature">
|
|
183
|
+
|
|
184
|
+
<a href="#hashlike_access-instance_method" title="#hashlike_access (instance method)">#<strong>hashlike_access</strong>(to: :itself, by: nil, raise_if_not_found: false) ⇒ Hash </a>
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
</span>
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
<span class="note title private">private</span>
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
<span class="summary_desc"><div class='inline'><p>The primary entrypoint for defining hash-like access behaviours.</p></div></span>
|
|
199
|
+
|
|
200
|
+
</li>
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
<li class="private ">
|
|
204
|
+
<span class="summary_signature">
|
|
205
|
+
|
|
206
|
+
<a href="#hashlike_access!-instance_method" title="#hashlike_access! (instance method)">#<strong>hashlike_access!</strong>(to: :itself, by: nil) ⇒ Hash </a>
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
</span>
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
<span class="note title private">private</span>
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
<span class="summary_desc"><div class='inline'><p>A convenience method that calls <span class='object_link'><a href="#hashlike_access-instance_method" title="ActiveRecord::HashlikeAccess#hashlike_access (method)">#hashlike_access</a></span> with <code>raise_if_not_found: true</code>.</p></div></span>
|
|
221
|
+
|
|
222
|
+
</li>
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
<li class="private ">
|
|
226
|
+
<span class="summary_signature">
|
|
227
|
+
|
|
228
|
+
<a href="#hashlike_access_config-instance_method" title="#hashlike_access_config (instance method)">#<strong>hashlike_access_config</strong> ⇒ Hash </a>
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
</span>
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
<span class="note title private">private</span>
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
<span class="summary_desc"><div class='inline'><p>Returns the current hash-like access config, with sensible defaults if <span class='object_link'><a href="#hashlike_access-instance_method" title="ActiveRecord::HashlikeAccess#hashlike_access (method)">#hashlike_access</a></span> has not been called.</p></div></span>
|
|
243
|
+
|
|
244
|
+
</li>
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
<li class="private ">
|
|
248
|
+
<span class="summary_signature">
|
|
249
|
+
|
|
250
|
+
<a href="#hashlike_access_lookup-instance_method" title="#hashlike_access_lookup (instance method)">#<strong>hashlike_access_lookup</strong>(*lookup_values) ⇒ ActiveRecord::Base<sup>?</sup> </a>
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
</span>
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
<span class="note title private">private</span>
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
<span class="summary_desc"><div class='inline'><p>Finds a record using the configured "lookup_fields" matched to the provided "lookup_values".</p></div></span>
|
|
265
|
+
|
|
266
|
+
</li>
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
</ul>
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
<div id="instance_method_details" class="method_details_list">
|
|
276
|
+
<h2>Instance Method Details</h2>
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
<div class="method_details first">
|
|
280
|
+
<h3 class="signature first" id="[]-instance_method">
|
|
281
|
+
|
|
282
|
+
#<strong>[]</strong> ⇒ <tt>Object</tt>
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
</h3><div class="docstring">
|
|
289
|
+
<div class="discussion">
|
|
290
|
+
<p>Finds a record by the previously-configured "lookup_fields" and calls the requested "response_method" on it.</p>
|
|
291
|
+
|
|
292
|
+
</div>
|
|
293
|
+
</div>
|
|
294
|
+
<div class="tags">
|
|
295
|
+
<p class="tag_title">Parameters:</p>
|
|
296
|
+
<ul class="param">
|
|
297
|
+
|
|
298
|
+
<li>
|
|
299
|
+
|
|
300
|
+
<span class='name'>*</span>
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
<span class='type'>(<tt>Array</tt>)</span>
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
—
|
|
308
|
+
<div class='inline'><p>A list consisting of lookup values to match against the "lookup_fields" in search of a record.
|
|
309
|
+
These are passed through, unaltered, to <span class='object_link'><a href="#hashlike_access_lookup-instance_method" title="ActiveRecord::HashlikeAccess#hashlike_access_lookup (method)">#hashlike_access_lookup</a></span>.</p></div>
|
|
310
|
+
|
|
311
|
+
</li>
|
|
312
|
+
|
|
313
|
+
</ul>
|
|
314
|
+
|
|
315
|
+
<p class="tag_title">Returns:</p>
|
|
316
|
+
<ul class="return">
|
|
317
|
+
|
|
318
|
+
<li>
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
<span class='type'></span>
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
<div class='inline'><p>Returns either <code>nil</code> or the result of calling the "response_method" on the matched record.</p></div>
|
|
327
|
+
|
|
328
|
+
</li>
|
|
329
|
+
|
|
330
|
+
</ul>
|
|
331
|
+
<p class="tag_title">Raises:</p>
|
|
332
|
+
<ul class="raise">
|
|
333
|
+
|
|
334
|
+
<li>
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
<span class='type'>(<tt>ActiveRecord::RecordNotFound</tt>)</span>
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
</li>
|
|
342
|
+
|
|
343
|
+
</ul>
|
|
344
|
+
|
|
345
|
+
</div><table class="source_code">
|
|
346
|
+
<tr>
|
|
347
|
+
<td>
|
|
348
|
+
<pre class="lines">
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
19
|
|
352
|
+
20
|
|
353
|
+
21</pre>
|
|
354
|
+
</td>
|
|
355
|
+
<td>
|
|
356
|
+
<pre class="code"><span class="info file"># File 'lib/active_record/hashlike_access.rb', line 19</span>
|
|
357
|
+
|
|
358
|
+
<span class='kw'>def</span> <span class='op'>[]</span><span class='lparen'>(</span><span class='op'>*</span><span class='rparen'>)</span>
|
|
359
|
+
<span class='id identifier rubyid_hashlike_access_lookup'>hashlike_access_lookup</span><span class='lparen'>(</span><span class='op'>*</span><span class='rparen'>)</span><span class='op'>&.</span><span class='id identifier rubyid_public_send'>public_send</span> <span class='id identifier rubyid_hashlike_access_config'>hashlike_access_config</span><span class='lbracket'>[</span><span class='symbol'>:response_method</span><span class='rbracket'>]</span>
|
|
360
|
+
<span class='kw'>end</span></pre>
|
|
361
|
+
</td>
|
|
362
|
+
</tr>
|
|
363
|
+
</table>
|
|
364
|
+
</div>
|
|
365
|
+
|
|
366
|
+
<div class="method_details ">
|
|
367
|
+
<h3 class="signature " id="[]=-instance_method">
|
|
368
|
+
|
|
369
|
+
#<strong>[]=</strong>(*args) ⇒ <tt>Object</tt>
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
</h3><div class="docstring">
|
|
376
|
+
<div class="discussion">
|
|
377
|
+
<p>Finds a record (as in <span class='object_link'><a href="#[]-instance_method" title="ActiveRecord::HashlikeAccess#[] (method)">#[]</a></span>), and calls the "assignment_method" with the remaining param.</p>
|
|
378
|
+
|
|
379
|
+
</div>
|
|
380
|
+
</div>
|
|
381
|
+
<div class="tags">
|
|
382
|
+
<p class="tag_title">Parameters:</p>
|
|
383
|
+
<ul class="param">
|
|
384
|
+
|
|
385
|
+
<li>
|
|
386
|
+
|
|
387
|
+
<span class='name'>*</span>
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
<span class='type'>(<tt>Array</tt>)</span>
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
—
|
|
395
|
+
<div class='inline'><p>A list consisting of lookup values as well as the actual assignment value.
|
|
396
|
+
All but the last of these is passed through, unaltered, to <span class='object_link'><a href="#hashlike_access_lookup-instance_method" title="ActiveRecord::HashlikeAccess#hashlike_access_lookup (method)">#hashlike_access_lookup</a></span>.</p></div>
|
|
397
|
+
|
|
398
|
+
</li>
|
|
399
|
+
|
|
400
|
+
</ul>
|
|
401
|
+
|
|
402
|
+
<p class="tag_title">Returns:</p>
|
|
403
|
+
<ul class="return">
|
|
404
|
+
|
|
405
|
+
<li>
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
<span class='type'></span>
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
<div class='inline'><p>As with all assignment methods, this returns the assignment value given.</p></div>
|
|
414
|
+
|
|
415
|
+
</li>
|
|
416
|
+
|
|
417
|
+
</ul>
|
|
418
|
+
<p class="tag_title">Raises:</p>
|
|
419
|
+
<ul class="raise">
|
|
420
|
+
|
|
421
|
+
<li>
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
<span class='type'>(<tt>NoMethodError</tt>, <tt>ActiveRecord::RecordInvalid</tt>, <tt>ActiveRecord::RecordNotSaved</tt>)</span>
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
</li>
|
|
429
|
+
|
|
430
|
+
</ul>
|
|
431
|
+
|
|
432
|
+
</div><table class="source_code">
|
|
433
|
+
<tr>
|
|
434
|
+
<td>
|
|
435
|
+
<pre class="lines">
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
34
|
|
439
|
+
35
|
|
440
|
+
36
|
|
441
|
+
37
|
|
442
|
+
38
|
|
443
|
+
39
|
|
444
|
+
40</pre>
|
|
445
|
+
</td>
|
|
446
|
+
<td>
|
|
447
|
+
<pre class="code"><span class="info file"># File 'lib/active_record/hashlike_access.rb', line 34</span>
|
|
448
|
+
|
|
449
|
+
<span class='kw'>def</span> <span class='op'>[]=</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
|
|
450
|
+
<span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_args'>args</span><span class='period'>.</span><span class='id identifier rubyid_pop'>pop</span>
|
|
451
|
+
<span class='id identifier rubyid_record'>record</span> <span class='op'>=</span> <span class='id identifier rubyid_hashlike_access_lookup'>hashlike_access_lookup</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='kw'>return</span>
|
|
452
|
+
|
|
453
|
+
<span class='id identifier rubyid_record'>record</span><span class='period'>.</span><span class='id identifier rubyid_public_send'>public_send</span> <span class='id identifier rubyid_hashlike_access_config'>hashlike_access_config</span><span class='lbracket'>[</span><span class='symbol'>:assignment_method</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span>
|
|
454
|
+
<span class='id identifier rubyid_record'>record</span><span class='period'>.</span><span class='id identifier rubyid_save!'>save!</span>
|
|
455
|
+
<span class='kw'>end</span></pre>
|
|
456
|
+
</td>
|
|
457
|
+
</tr>
|
|
458
|
+
</table>
|
|
459
|
+
</div>
|
|
460
|
+
|
|
461
|
+
<div class="method_details ">
|
|
462
|
+
<h3 class="signature " id="hashlike_access-instance_method">
|
|
463
|
+
|
|
464
|
+
#<strong>hashlike_access</strong>(to: :itself, by: nil, raise_if_not_found: false) ⇒ <tt>Hash</tt> <span class="extras">(private)</span>
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
</h3><div class="docstring">
|
|
471
|
+
<div class="discussion">
|
|
472
|
+
<p>The primary entrypoint for defining hash-like access behaviours.</p>
|
|
473
|
+
|
|
474
|
+
</div>
|
|
475
|
+
</div>
|
|
476
|
+
<div class="tags">
|
|
477
|
+
<p class="tag_title">Parameters:</p>
|
|
478
|
+
<ul class="param">
|
|
479
|
+
|
|
480
|
+
<li>
|
|
481
|
+
|
|
482
|
+
<span class='name'>[Symbol,</span>
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
—
|
|
490
|
+
<div class='inline'><p>a customizable set of options</p></div>
|
|
491
|
+
|
|
492
|
+
</li>
|
|
493
|
+
|
|
494
|
+
<li>
|
|
495
|
+
|
|
496
|
+
<span class='name'>[true,</span>
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
—
|
|
504
|
+
<div class='inline'><p>a customizable set of options</p></div>
|
|
505
|
+
|
|
506
|
+
</li>
|
|
507
|
+
|
|
508
|
+
</ul>
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
<p class="tag_title">Returns:</p>
|
|
519
|
+
<ul class="return">
|
|
520
|
+
|
|
521
|
+
<li>
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
—
|
|
529
|
+
<div class='inline'><p>Returns the resulting hash-like access config.</p></div>
|
|
530
|
+
|
|
531
|
+
</li>
|
|
532
|
+
|
|
533
|
+
</ul>
|
|
534
|
+
|
|
535
|
+
</div><table class="source_code">
|
|
536
|
+
<tr>
|
|
537
|
+
<td>
|
|
538
|
+
<pre class="lines">
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
60
|
|
542
|
+
61
|
|
543
|
+
62
|
|
544
|
+
63
|
|
545
|
+
64
|
|
546
|
+
65
|
|
547
|
+
66
|
|
548
|
+
67</pre>
|
|
549
|
+
</td>
|
|
550
|
+
<td>
|
|
551
|
+
<pre class="code"><span class="info file"># File 'lib/active_record/hashlike_access.rb', line 60</span>
|
|
552
|
+
|
|
553
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_hashlike_access'>hashlike_access</span><span class='lparen'>(</span><span class='label'>to:</span> <span class='symbol'>:itself</span><span class='comma'>,</span> <span class='label'>by:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>raise_if_not_found:</span> <span class='kw'>false</span><span class='rparen'>)</span>
|
|
554
|
+
<span class='id identifier rubyid_requested_config'>requested_config</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='label'>lookup_fields:</span> <span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_wrap'>wrap</span><span class='lparen'>(</span><span class='id identifier rubyid_by'>by</span><span class='rparen'>)</span><span class='comma'>,</span>
|
|
555
|
+
<span class='label'>response_method:</span> <span class='id identifier rubyid_to'>to</span><span class='comma'>,</span>
|
|
556
|
+
<span class='label'>assignment_method:</span> <span class='symbol'>:"#{</span><span class='id identifier rubyid_to'>to</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>"</span></span><span class='comma'>,</span>
|
|
557
|
+
<span class='label'>raise_if_not_found:</span> <span class='id identifier rubyid_raise_if_not_found'>raise_if_not_found</span> <span class='rbrace'>}</span>
|
|
558
|
+
|
|
559
|
+
<span class='id identifier rubyid_hashlike_access_config'>hashlike_access_config</span><span class='period'>.</span><span class='id identifier rubyid_merge!'>merge!</span> <span class='id identifier rubyid_requested_config'>requested_config</span><span class='period'>.</span><span class='id identifier rubyid_compact_blank'>compact_blank</span>
|
|
560
|
+
<span class='kw'>end</span></pre>
|
|
561
|
+
</td>
|
|
562
|
+
</tr>
|
|
563
|
+
</table>
|
|
564
|
+
</div>
|
|
565
|
+
|
|
566
|
+
<div class="method_details ">
|
|
567
|
+
<h3 class="signature " id="hashlike_access!-instance_method">
|
|
568
|
+
|
|
569
|
+
#<strong>hashlike_access!</strong>(to: :itself, by: nil) ⇒ <tt>Hash</tt> <span class="extras">(private)</span>
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
</h3><div class="docstring">
|
|
576
|
+
<div class="discussion">
|
|
577
|
+
<p>A convenience method that calls <span class='object_link'><a href="#hashlike_access-instance_method" title="ActiveRecord::HashlikeAccess#hashlike_access (method)">#hashlike_access</a></span> with <code>raise_if_not_found: true</code>.</p>
|
|
578
|
+
|
|
579
|
+
</div>
|
|
580
|
+
</div>
|
|
581
|
+
<div class="tags">
|
|
582
|
+
<p class="tag_title">Parameters:</p>
|
|
583
|
+
<ul class="param">
|
|
584
|
+
|
|
585
|
+
<li>
|
|
586
|
+
|
|
587
|
+
<span class='name'>[Symbol,</span>
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
—
|
|
595
|
+
<div class='inline'><p>a customizable set of options</p></div>
|
|
596
|
+
|
|
597
|
+
</li>
|
|
598
|
+
|
|
599
|
+
</ul>
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
<p class="tag_title">Returns:</p>
|
|
608
|
+
<ul class="return">
|
|
609
|
+
|
|
610
|
+
<li>
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
—
|
|
618
|
+
<div class='inline'><p>Returns the resulting hash-like access config.</p></div>
|
|
619
|
+
|
|
620
|
+
</li>
|
|
621
|
+
|
|
622
|
+
</ul>
|
|
623
|
+
|
|
624
|
+
</div><table class="source_code">
|
|
625
|
+
<tr>
|
|
626
|
+
<td>
|
|
627
|
+
<pre class="lines">
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
81
|
|
631
|
+
82
|
|
632
|
+
83</pre>
|
|
633
|
+
</td>
|
|
634
|
+
<td>
|
|
635
|
+
<pre class="code"><span class="info file"># File 'lib/active_record/hashlike_access.rb', line 81</span>
|
|
636
|
+
|
|
637
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_hashlike_access!'>hashlike_access!</span><span class='lparen'>(</span><span class='label'>to:</span> <span class='symbol'>:itself</span><span class='comma'>,</span> <span class='label'>by:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
|
|
638
|
+
<span class='id identifier rubyid_hashlike_access'>hashlike_access</span><span class='lparen'>(</span><span class='label'>to:</span><span class='comma'>,</span> <span class='label'>by:</span><span class='comma'>,</span> <span class='label'>raise_if_not_found:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
|
639
|
+
<span class='kw'>end</span></pre>
|
|
640
|
+
</td>
|
|
641
|
+
</tr>
|
|
642
|
+
</table>
|
|
643
|
+
</div>
|
|
644
|
+
|
|
645
|
+
<div class="method_details ">
|
|
646
|
+
<h3 class="signature " id="hashlike_access_config-instance_method">
|
|
647
|
+
|
|
648
|
+
#<strong>hashlike_access_config</strong> ⇒ <tt>Hash</tt> <span class="extras">(private)</span>
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
</h3><div class="docstring">
|
|
655
|
+
<div class="discussion">
|
|
656
|
+
<p>Returns the current hash-like access config, with sensible defaults if <span class='object_link'><a href="#hashlike_access-instance_method" title="ActiveRecord::HashlikeAccess#hashlike_access (method)">#hashlike_access</a></span> has not been called.</p>
|
|
657
|
+
|
|
658
|
+
</div>
|
|
659
|
+
</div>
|
|
660
|
+
<div class="tags">
|
|
661
|
+
|
|
662
|
+
<p class="tag_title">Returns:</p>
|
|
663
|
+
<ul class="return">
|
|
664
|
+
|
|
665
|
+
<li>
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
—
|
|
673
|
+
<div class='inline'><p>Returns the current hash-like access config.</p></div>
|
|
674
|
+
|
|
675
|
+
</li>
|
|
676
|
+
|
|
677
|
+
</ul>
|
|
678
|
+
|
|
679
|
+
</div><table class="source_code">
|
|
680
|
+
<tr>
|
|
681
|
+
<td>
|
|
682
|
+
<pre class="lines">
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
90
|
|
686
|
+
91
|
|
687
|
+
92
|
|
688
|
+
93
|
|
689
|
+
94
|
|
690
|
+
95</pre>
|
|
691
|
+
</td>
|
|
692
|
+
<td>
|
|
693
|
+
<pre class="code"><span class="info file"># File 'lib/active_record/hashlike_access.rb', line 90</span>
|
|
694
|
+
|
|
695
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_hashlike_access_config'>hashlike_access_config</span>
|
|
696
|
+
<span class='ivar'>@hashlike_access_config</span> <span class='op'>||=</span> <span class='lbrace'>{</span> <span class='label'>lookup_fields:</span> <span class='const'>Array</span><span class='period'>.</span><span class='id identifier rubyid_wrap'>wrap</span><span class='lparen'>(</span><span class='id identifier rubyid_primary_key'>primary_key</span><span class='rparen'>)</span><span class='comma'>,</span>
|
|
697
|
+
<span class='label'>response_method:</span> <span class='symbol'>:itself</span><span class='comma'>,</span>
|
|
698
|
+
<span class='label'>assignment_method:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
|
699
|
+
<span class='label'>raise_if_not_found:</span> <span class='kw'>false</span> <span class='rbrace'>}</span>
|
|
700
|
+
<span class='kw'>end</span></pre>
|
|
701
|
+
</td>
|
|
702
|
+
</tr>
|
|
703
|
+
</table>
|
|
704
|
+
</div>
|
|
705
|
+
|
|
706
|
+
<div class="method_details ">
|
|
707
|
+
<h3 class="signature " id="hashlike_access_lookup-instance_method">
|
|
708
|
+
|
|
709
|
+
#<strong>hashlike_access_lookup</strong>(*lookup_values) ⇒ <tt><span class='object_link'><a href="Base.html" title="ActiveRecord::Base (class)">ActiveRecord::Base</a></span></tt><sup>?</sup> <span class="extras">(private)</span>
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
</h3><div class="docstring">
|
|
716
|
+
<div class="discussion">
|
|
717
|
+
<p>Finds a record using the configured "lookup_fields" matched to the provided "lookup_values".</p>
|
|
718
|
+
|
|
719
|
+
</div>
|
|
720
|
+
</div>
|
|
721
|
+
<div class="tags">
|
|
722
|
+
<p class="tag_title">Parameters:</p>
|
|
723
|
+
<ul class="param">
|
|
724
|
+
|
|
725
|
+
<li>
|
|
726
|
+
|
|
727
|
+
<span class='name'>lookup_values</span>
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
<span class='type'>(<tt>Array</tt>)</span>
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
—
|
|
735
|
+
<div class='inline'><p>A list consisting of lookup values to match against the "lookup_fields" in search of a record.</p></div>
|
|
736
|
+
|
|
737
|
+
</li>
|
|
738
|
+
|
|
739
|
+
</ul>
|
|
740
|
+
|
|
741
|
+
<p class="tag_title">Returns:</p>
|
|
742
|
+
<ul class="return">
|
|
743
|
+
|
|
744
|
+
<li>
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
<span class='type'>(<tt><span class='object_link'><a href="Base.html" title="ActiveRecord::Base (class)">ActiveRecord::Base</a></span></tt>, <tt>nil</tt>)</span>
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
—
|
|
752
|
+
<div class='inline'><p>Returns the matching record or <code>nil</code> if none was found and the "raise_if_not_found" config is <code>false</code>.</p></div>
|
|
753
|
+
|
|
754
|
+
</li>
|
|
755
|
+
|
|
756
|
+
</ul>
|
|
757
|
+
<p class="tag_title">Raises:</p>
|
|
758
|
+
<ul class="raise">
|
|
759
|
+
|
|
760
|
+
<li>
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
<span class='type'>(<tt>ActiveRecord::RecordNotFound</tt>)</span>
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
</li>
|
|
768
|
+
|
|
769
|
+
</ul>
|
|
770
|
+
|
|
771
|
+
</div><table class="source_code">
|
|
772
|
+
<tr>
|
|
773
|
+
<td>
|
|
774
|
+
<pre class="lines">
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
107
|
|
778
|
+
108
|
|
779
|
+
109
|
|
780
|
+
110
|
|
781
|
+
111
|
|
782
|
+
112</pre>
|
|
783
|
+
</td>
|
|
784
|
+
<td>
|
|
785
|
+
<pre class="code"><span class="info file"># File 'lib/active_record/hashlike_access.rb', line 107</span>
|
|
786
|
+
|
|
787
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_hashlike_access_lookup'>hashlike_access_lookup</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_lookup_values'>lookup_values</span><span class='rparen'>)</span>
|
|
788
|
+
<span class='id identifier rubyid_record'>record</span> <span class='op'>=</span> <span class='id identifier rubyid_find_by'>find_by</span> <span class='id identifier rubyid_hashlike_access_config'>hashlike_access_config</span><span class='lbracket'>[</span><span class='symbol'>:lookup_fields</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_zip'>zip</span><span class='lparen'>(</span><span class='id identifier rubyid_lookup_values'>lookup_values</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
|
|
789
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="../ActiveRecord.html" title="ActiveRecord (module)">ActiveRecord</a></span></span><span class='op'>::</span><span class='const'>RecordNotFound</span> <span class='kw'>if</span> <span class='id identifier rubyid_record'>record</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span> <span class='op'>&&</span> <span class='id identifier rubyid_hashlike_access_config'>hashlike_access_config</span><span class='lbracket'>[</span><span class='symbol'>:raise_if_not_found</span><span class='rbracket'>]</span>
|
|
790
|
+
|
|
791
|
+
<span class='id identifier rubyid_record'>record</span>
|
|
792
|
+
<span class='kw'>end</span></pre>
|
|
793
|
+
</td>
|
|
794
|
+
</tr>
|
|
795
|
+
</table>
|
|
796
|
+
</div>
|
|
797
|
+
|
|
798
|
+
</div>
|
|
799
|
+
|
|
800
|
+
</div>
|
|
801
|
+
|
|
802
|
+
<div id="footer">
|
|
803
|
+
Generated on Tue Aug 18 18:42:26 2026 by
|
|
804
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
805
|
+
0.9.45 (ruby-3.4.8).
|
|
806
|
+
</div>
|
|
807
|
+
|
|
808
|
+
</div>
|
|
809
|
+
</body>
|
|
810
|
+
</html>
|