anchormodel 0.1.5 → 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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +78 -2
  5. data/VERSION +1 -1
  6. data/anchormodel.gemspec +4 -4
  7. data/doc/Anchormodel/ActiveModelTypeValueSingle.html +113 -31
  8. data/doc/Anchormodel/Attribute.html +109 -9
  9. data/doc/Anchormodel/ModelMixin.html +75 -3
  10. data/doc/Anchormodel/SimpleFormInputs/Helpers/AnchormodelInputsCommon.html +269 -0
  11. data/doc/Anchormodel/SimpleFormInputs/Helpers.html +124 -0
  12. data/doc/Anchormodel/SimpleFormInputs.html +124 -0
  13. data/doc/Anchormodel/Util.html +131 -15
  14. data/doc/Anchormodel/Version.html +3 -3
  15. data/doc/Anchormodel.html +97 -32
  16. data/doc/AnchormodelGenerator.html +3 -3
  17. data/doc/AnchormodelInput.html +140 -0
  18. data/doc/AnchormodelRadioButtonsInput.html +140 -0
  19. data/doc/_index.html +16 -4
  20. data/doc/class_list.html +1 -1
  21. data/doc/file.README.html +77 -5
  22. data/doc/frames.html +1 -1
  23. data/doc/index.html +77 -5
  24. data/doc/method_list.html +62 -6
  25. data/doc/top-level-namespace.html +4 -4
  26. data/lib/anchormodel/active_model_type_value_multi.rb +31 -0
  27. data/lib/anchormodel/active_model_type_value_single.rb +4 -2
  28. data/lib/anchormodel/attribute.rb +7 -1
  29. data/lib/anchormodel/model_mixin.rb +7 -0
  30. data/lib/anchormodel/simple_form_inputs/anchormodel_check_boxes_input.rb +23 -0
  31. data/lib/anchormodel/simple_form_inputs/helpers/anchormodel_inputs_common.rb +8 -3
  32. data/lib/anchormodel/util.rb +57 -7
  33. data/lib/anchormodel.rb +7 -0
  34. data/test/active_record_model/user_test.rb +73 -9
  35. data/test/dummy/app/anchormodels/animal.rb +6 -0
  36. data/test/dummy/app/models/user.rb +1 -0
  37. data/test/dummy/db/migrate/20240425182000_add_animals_to_users.rb +5 -0
  38. data/test/dummy/db/schema.rb +2 -1
  39. metadata +11 -2
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Anchormodel::Util
8
8
 
9
- &mdash; Documentation by YARD 0.9.28
9
+ &mdash; Documentation by YARD 0.9.34
10
10
 
11
11
  </title>
12
12
 
@@ -112,7 +112,7 @@
112
112
  <li class="public ">
113
113
  <span class="summary_signature">
114
114
 
115
- <a href="#install_methods_in_model-class_method" title="install_methods_in_model (class method)">.<strong>install_methods_in_model</strong>(model_class, attribute_name, anchormodel_class = nil, optional: false, model_readers: true, model_writers: true, model_scopes: true, model_methods: nil) &#x21d2; Object </a>
115
+ <a href="#install_methods_in_model-class_method" title="install_methods_in_model (class method)">.<strong>install_methods_in_model</strong>(model_class, attribute_name, anchormodel_class = nil, optional: false, multiple: false, model_readers: true, model_writers: true, model_scopes: true, model_methods: nil) &#x21d2; Object </a>
116
116
 
117
117
 
118
118
 
@@ -145,7 +145,7 @@
145
145
  <div class="method_details first">
146
146
  <h3 class="signature first" id="install_methods_in_model-class_method">
147
147
 
148
- .<strong>install_methods_in_model</strong>(model_class, attribute_name, anchormodel_class = nil, optional: false, model_readers: true, model_writers: true, model_scopes: true, model_methods: nil) &#x21d2; <tt>Object</tt>
148
+ .<strong>install_methods_in_model</strong>(model_class, attribute_name, anchormodel_class = nil, optional: false, multiple: false, model_readers: true, model_writers: true, model_scopes: true, model_methods: nil) &#x21d2; <tt>Object</tt>
149
149
 
150
150
 
151
151
 
@@ -226,7 +226,25 @@
226
226
 
227
227
  &mdash;
228
228
  <div class='inline'>
229
- <p>If false, a presence validation is added to the model.</p>
229
+ <p>If false, a presence validation is added to the model. Forced to true if multiple is true.</p>
230
+ </div>
231
+
232
+ </li>
233
+
234
+ <li>
235
+
236
+ <span class='name'>multiple</span>
237
+
238
+
239
+ <span class='type'>(<tt>Boolean</tt>)</span>
240
+
241
+
242
+ <em class="default">(defaults to: <tt>false</tt>)</em>
243
+
244
+
245
+ &mdash;
246
+ <div class='inline'>
247
+ <p>Internal only. Distinguishes between <code>belongs_to_anchormodel</code> and <code>belongs_to_anchormodels</code>.</p>
230
248
  </div>
231
249
 
232
250
  </li>
@@ -312,7 +330,6 @@
312
330
  <pre class="lines">
313
331
 
314
332
 
315
- 13
316
333
  14
317
334
  15
318
335
  16
@@ -391,21 +408,73 @@
391
408
  89
392
409
  90
393
410
  91
394
- 92</pre>
411
+ 92
412
+ 93
413
+ 94
414
+ 95
415
+ 96
416
+ 97
417
+ 98
418
+ 99
419
+ 100
420
+ 101
421
+ 102
422
+ 103
423
+ 104
424
+ 105
425
+ 106
426
+ 107
427
+ 108
428
+ 109
429
+ 110
430
+ 111
431
+ 112
432
+ 113
433
+ 114
434
+ 115
435
+ 116
436
+ 117
437
+ 118
438
+ 119
439
+ 120
440
+ 121
441
+ 122
442
+ 123
443
+ 124
444
+ 125
445
+ 126
446
+ 127
447
+ 128
448
+ 129
449
+ 130
450
+ 131
451
+ 132
452
+ 133
453
+ 134
454
+ 135
455
+ 136
456
+ 137
457
+ 138
458
+ 139
459
+ 140
460
+ 141
461
+ 142</pre>
395
462
  </td>
396
463
  <td>
397
- <pre class="code"><span class="info file"># File 'lib/anchormodel/util.rb', line 13</span>
464
+ <pre class="code"><span class="info file"># File 'lib/anchormodel/util.rb', line 14</span>
398
465
 
399
466
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_install_methods_in_model'>install_methods_in_model</span><span class='lparen'>(</span><span class='id identifier rubyid_model_class'>model_class</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='comma'>,</span> <span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span>
400
467
  <span class='label'>optional:</span> <span class='kw'>false</span><span class='comma'>,</span>
468
+ <span class='label'>multiple:</span> <span class='kw'>false</span><span class='comma'>,</span>
401
469
  <span class='label'>model_readers:</span> <span class='kw'>true</span><span class='comma'>,</span>
402
470
  <span class='label'>model_writers:</span> <span class='kw'>true</span><span class='comma'>,</span>
403
471
  <span class='label'>model_scopes:</span> <span class='kw'>true</span><span class='comma'>,</span>
404
472
  <span class='label'>model_methods:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
405
473
 
474
+ <span class='id identifier rubyid_optional'>optional</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_multiple'>multiple</span>
406
475
  <span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span> <span class='op'>||=</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_classify'>classify</span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
407
476
  <span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>=</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
408
- <span class='id identifier rubyid_attribute'>attribute</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Anchormodel.html" title="Anchormodel (class)">Anchormodel</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Attribute.html" title="Anchormodel::Attribute (class)">Attribute</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Attribute.html#initialize-instance_method" title="Anchormodel::Attribute#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='comma'>,</span> <span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span><span class='comma'>,</span> <span class='id identifier rubyid_optional'>optional</span><span class='rparen'>)</span>
477
+ <span class='id identifier rubyid_attribute'>attribute</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Anchormodel.html" title="Anchormodel (class)">Anchormodel</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Attribute.html" title="Anchormodel::Attribute (class)">Attribute</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Attribute.html#initialize-instance_method" title="Anchormodel::Attribute#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_model_class'>model_class</span><span class='comma'>,</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='comma'>,</span> <span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span><span class='comma'>,</span> <span class='id identifier rubyid_optional'>optional</span><span class='comma'>,</span> <span class='id identifier rubyid_multiple'>multiple</span><span class='rparen'>)</span>
409
478
 
410
479
  <span class='comment'># Mass configurations if model_methods was specfied
411
480
  </span> <span class='kw'>unless</span> <span class='id identifier rubyid_model_methods'>model_methods</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -424,11 +493,43 @@
424
493
 
425
494
  <span class='comment'># Make casting work
426
495
  </span> <span class='comment'># Define serializer/deserializer
427
- </span> <span class='id identifier rubyid_active_model_type_value'>active_model_type_value</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Anchormodel.html" title="Anchormodel (class)">Anchormodel</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="ActiveModelTypeValueSingle.html" title="Anchormodel::ActiveModelTypeValueSingle (class)">ActiveModelTypeValueSingle</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ActiveModelTypeValueSingle.html#initialize-instance_method" title="Anchormodel::ActiveModelTypeValueSingle#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_attribute'>attribute</span><span class='rparen'>)</span>
496
+ </span> <span class='id identifier rubyid_active_model_type_value'>active_model_type_value</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='id identifier rubyid_multiple'>multiple</span> <span class='op'>?</span> <span class='const'><span class='object_link'><a href="../Anchormodel.html" title="Anchormodel (class)">Anchormodel</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="ActiveModelTypeValueMulti.html" title="Anchormodel::ActiveModelTypeValueMulti (class)">ActiveModelTypeValueMulti</a></span></span> <span class='op'>:</span> <span class='const'><span class='object_link'><a href="../Anchormodel.html" title="Anchormodel (class)">Anchormodel</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="ActiveModelTypeValueSingle.html" title="Anchormodel::ActiveModelTypeValueSingle (class)">ActiveModelTypeValueSingle</a></span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute'>attribute</span><span class='rparen'>)</span>
428
497
 
429
498
  <span class='comment'># Overwrite reader to force building anchors at every retrieval
430
499
  </span> <span class='id identifier rubyid_model_class'>model_class</span><span class='period'>.</span><span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span> <span class='kw'>do</span>
431
- <span class='id identifier rubyid_active_model_type_value'>active_model_type_value</span><span class='period'>.</span><span class='id identifier rubyid_deserialize'>deserialize</span><span class='lparen'>(</span><span class='id identifier rubyid_read_attribute_before_type_cast'>read_attribute_before_type_cast</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rparen'>)</span><span class='rparen'>)</span>
500
+ <span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_active_model_type_value'>active_model_type_value</span><span class='period'>.</span><span class='id identifier rubyid_deserialize'>deserialize</span><span class='lparen'>(</span><span class='id identifier rubyid_read_attribute_before_type_cast'>read_attribute_before_type_cast</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='rparen'>)</span><span class='rparen'>)</span>
501
+
502
+ <span class='comment'># If this attribute holds multiple anchormodels (`belongs_to_anchormodels`), patch the Array before returning in order to implement collection modifiers:
503
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_multiple'>multiple</span>
504
+ <span class='id identifier rubyid_model'>model</span> <span class='op'>=</span> <span class='kw'>self</span> <span class='comment'># fetching the model in order to pass it to the implementation of the following via reflection to make it available for storage
505
+ </span> <span class='id identifier rubyid_single_tv'>single_tv</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../Anchormodel.html" title="Anchormodel (class)">Anchormodel</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="ActiveModelTypeValueSingle.html" title="Anchormodel::ActiveModelTypeValueSingle (class)">ActiveModelTypeValueSingle</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ActiveModelTypeValueSingle.html#initialize-instance_method" title="Anchormodel::ActiveModelTypeValueSingle#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_attribute'>attribute</span><span class='rparen'>)</span> <span class='comment'># Used for casting inputs to properly compare them to the set.
506
+ </span>
507
+ <span class='comment'># Adding
508
+ </span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_define_singleton_method'>define_singleton_method</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>add</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_value_to_add'>value_to_add</span><span class='op'>|</span>
509
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_single_tv'>single_tv</span><span class='period'>.</span><span class='id identifier rubyid_cast'>cast</span><span class='lparen'>(</span><span class='id identifier rubyid_value_to_add'>value_to_add</span><span class='rparen'>)</span><span class='rparen'>)</span>
510
+ <span class='id identifier rubyid_model'>model</span><span class='period'>.</span><span class='id identifier rubyid_write_attribute'>write_attribute</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='comma'>,</span> <span class='id identifier rubyid_active_model_type_value'>active_model_type_value</span><span class='period'>.</span><span class='id identifier rubyid_serialize'>serialize</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span><span class='rparen'>)</span>
511
+ <span class='kw'>next</span> <span class='kw'>self</span>
512
+ <span class='kw'>end</span>
513
+ <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_define_singleton_method'>define_singleton_method</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>&lt;&lt;</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_value_to_add'>value_to_add</span><span class='op'>|</span> <span class='id identifier rubyid_add'>add</span><span class='lparen'>(</span><span class='id identifier rubyid_single_tv'>single_tv</span><span class='period'>.</span><span class='id identifier rubyid_cast'>cast</span><span class='lparen'>(</span><span class='id identifier rubyid_value_to_add'>value_to_add</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
514
+
515
+ <span class='comment'># Deleting
516
+ </span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_define_singleton_method'>define_singleton_method</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>delete</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_value_to_delete'>value_to_delete</span><span class='op'>|</span>
517
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_single_tv'>single_tv</span><span class='period'>.</span><span class='id identifier rubyid_cast'>cast</span><span class='lparen'>(</span><span class='id identifier rubyid_value_to_delete'>value_to_delete</span><span class='rparen'>)</span><span class='rparen'>)</span>
518
+ <span class='id identifier rubyid_model'>model</span><span class='period'>.</span><span class='id identifier rubyid_write_attribute'>write_attribute</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='comma'>,</span> <span class='id identifier rubyid_active_model_type_value'>active_model_type_value</span><span class='period'>.</span><span class='id identifier rubyid_serialize'>serialize</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span><span class='rparen'>)</span>
519
+ <span class='kw'>next</span> <span class='kw'>self</span>
520
+ <span class='kw'>end</span>
521
+
522
+ <span class='comment'># Clearing
523
+ </span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_define_singleton_method'>define_singleton_method</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>clear</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span> <span class='kw'>do</span>
524
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='rparen'>)</span>
525
+ <span class='id identifier rubyid_model'>model</span><span class='period'>.</span><span class='id identifier rubyid_write_attribute'>write_attribute</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='comma'>,</span> <span class='id identifier rubyid_active_model_type_value'>active_model_type_value</span><span class='period'>.</span><span class='id identifier rubyid_serialize'>serialize</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span><span class='rparen'>)</span>
526
+ <span class='kw'>next</span> <span class='kw'>self</span>
527
+ <span class='kw'>end</span>
528
+
529
+ <span class='comment'># In the future, further methods could be supported. e.g. delete_if, subtract etc.
530
+ </span> <span class='kw'>end</span>
531
+
532
+ <span class='kw'>return</span> <span class='id identifier rubyid_result'>result</span>
432
533
  <span class='kw'>end</span>
433
534
 
434
535
  <span class='comment'># Override writer to fail early when an invalid target value is specified
@@ -447,7 +548,11 @@
447
548
  <span class='id identifier rubyid_fail'>fail</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Anchormodel reader </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>? already defined for </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>, add `model_readers: false` to `belongs_to_anchormodel :</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>`.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
448
549
  <span class='kw'>end</span>
449
550
  <span class='id identifier rubyid_model_class'>model_class</span><span class='period'>.</span><span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='symbol'>:&quot;#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>?</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>do</span>
450
- <span class='id identifier rubyid_public_send'>public_send</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_entry'>entry</span>
551
+ <span class='kw'>if</span> <span class='id identifier rubyid_multiple'>multiple</span>
552
+ <span class='id identifier rubyid_public_send'>public_send</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
553
+ <span class='kw'>else</span>
554
+ <span class='id identifier rubyid_public_send'>public_send</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='id identifier rubyid_entry'>entry</span>
555
+ <span class='kw'>end</span>
451
556
  <span class='kw'>end</span>
452
557
  <span class='kw'>end</span>
453
558
  <span class='kw'>end</span>
@@ -460,7 +565,11 @@
460
565
  <span class='id identifier rubyid_fail'>fail</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Anchormodel writer </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>! already defined for </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>, add `model_writers: false` to `belongs_to_anchormodel :</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>`.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
461
566
  <span class='kw'>end</span>
462
567
  <span class='id identifier rubyid_model_class'>model_class</span><span class='period'>.</span><span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='symbol'>:&quot;#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>!</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>do</span>
463
- <span class='id identifier rubyid_public_send'>public_send</span><span class='lparen'>(</span><span class='symbol'>:&quot;#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
568
+ <span class='kw'>if</span> <span class='id identifier rubyid_multiple'>multiple</span>
569
+ <span class='id identifier rubyid_public_send'>public_send</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_entry'>entry</span>
570
+ <span class='kw'>else</span>
571
+ <span class='id identifier rubyid_public_send'>public_send</span><span class='lparen'>(</span><span class='symbol'>:&quot;#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='rparen'>)</span>
572
+ <span class='kw'>end</span>
464
573
  <span class='kw'>end</span>
465
574
  <span class='kw'>end</span>
466
575
  <span class='kw'>end</span>
@@ -472,7 +581,14 @@
472
581
  <span class='kw'>if</span> <span class='id identifier rubyid_model_class'>model_class</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
473
582
  <span class='id identifier rubyid_fail'>fail</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Anchormodel scope </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'> already defined for </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='embexpr_end'>}</span><span class='tstring_content'>, add `model_scopes: false` to `belongs_to_anchormodel :</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'>`.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
474
583
  <span class='kw'>end</span>
475
- <span class='id identifier rubyid_model_class'>model_class</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='tlambda'>-&gt;</span> <span class='tlambeg'>{</span> <span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='rparen'>)</span>
584
+ <span class='kw'>if</span> <span class='id identifier rubyid_multiple'>multiple</span>
585
+ <span class='id identifier rubyid_model_class'>model_class</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_lambda'>lambda</span> <span class='lbrace'>{</span>
586
+ <span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> LIKE ? OR </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> LIKE ? OR </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> LIKE ? OR </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> LIKE ?</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
587
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>,%</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>,%</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
588
+ <span class='rbrace'>}</span><span class='rparen'>)</span>
589
+ <span class='kw'>else</span>
590
+ <span class='id identifier rubyid_model_class'>model_class</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span><span class='lparen'>(</span><span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='tlambda'>-&gt;</span> <span class='tlambeg'>{</span> <span class='id identifier rubyid_where'>where</span><span class='lparen'>(</span><span class='id identifier rubyid_attribute_name'>attribute_name</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_entry'>entry</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='rparen'>)</span>
591
+ <span class='kw'>end</span>
476
592
  <span class='kw'>end</span>
477
593
  <span class='kw'>end</span>
478
594
  <span class='kw'>end</span></pre>
@@ -486,9 +602,9 @@
486
602
  </div>
487
603
 
488
604
  <div id="footer">
489
- Generated on Wed Apr 24 17:01:46 2024 by
605
+ Generated on Sat Apr 27 10:18:33 2024 by
490
606
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
491
- 0.9.28 (ruby-3.2.2).
607
+ 0.9.34 (ruby-3.2.2).
492
608
  </div>
493
609
 
494
610
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: Anchormodel::Version
8
8
 
9
- &mdash; Documentation by YARD 0.9.28
9
+ &mdash; Documentation by YARD 0.9.34
10
10
 
11
11
  </title>
12
12
 
@@ -129,9 +129,9 @@
129
129
  </div>
130
130
 
131
131
  <div id="footer">
132
- Generated on Wed Apr 24 17:01:46 2024 by
132
+ Generated on Sat Apr 27 10:18:33 2024 by
133
133
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
134
- 0.9.28 (ruby-3.2.2).
134
+ 0.9.34 (ruby-3.2.2).
135
135
  </div>
136
136
 
137
137
  </div>
data/doc/Anchormodel.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Anchormodel
8
8
 
9
- &mdash; Documentation by YARD 0.9.28
9
+ &mdash; Documentation by YARD 0.9.34
10
10
 
11
11
  </title>
12
12
 
@@ -120,7 +120,7 @@
120
120
 
121
121
 
122
122
 
123
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="Anchormodel/ActiveModelTypeValueSingle.html" title="Anchormodel::ActiveModelTypeValueSingle (class)">ActiveModelTypeValueSingle</a></span>, <span class='object_link'><a href="Anchormodel/Attribute.html" title="Anchormodel::Attribute (class)">Attribute</a></span>
123
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Anchormodel/ActiveModelTypeValueMulti.html" title="Anchormodel::ActiveModelTypeValueMulti (class)">ActiveModelTypeValueMulti</a></span>, <span class='object_link'><a href="Anchormodel/ActiveModelTypeValueSingle.html" title="Anchormodel::ActiveModelTypeValueSingle (class)">ActiveModelTypeValueSingle</a></span>, <span class='object_link'><a href="Anchormodel/Attribute.html" title="Anchormodel::Attribute (class)">Attribute</a></span>
124
124
 
125
125
 
126
126
  </p>
@@ -243,6 +243,30 @@
243
243
  <p>Retrieves a particular value given the key.</p>
244
244
  </div></span>
245
245
 
246
+ </li>
247
+
248
+
249
+ <li class="public ">
250
+ <span class="summary_signature">
251
+
252
+ <a href="#form_collection-class_method" title="form_collection (class method)">.<strong>form_collection</strong> &#x21d2; Object </a>
253
+
254
+
255
+
256
+ </span>
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+ <span class="summary_desc"><div class='inline'>
267
+ <p>Returns an array of tuples [label, key] suitable for passing as a collection to some form input helpers.</p>
268
+ </div></span>
269
+
246
270
  </li>
247
271
 
248
272
 
@@ -463,11 +487,6 @@
463
487
  <pre class="lines">
464
488
 
465
489
 
466
- 38
467
- 39
468
- 40
469
- 41
470
- 42
471
490
  43
472
491
  44
473
492
  45
@@ -485,10 +504,15 @@
485
504
  57
486
505
  58
487
506
  59
488
- 60</pre>
507
+ 60
508
+ 61
509
+ 62
510
+ 63
511
+ 64
512
+ 65</pre>
489
513
  </td>
490
514
  <td>
491
- <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 38</span>
515
+ <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 43</span>
492
516
 
493
517
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span>
494
518
  <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_setup!'>setup!</span> <span class='kw'>unless</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_setup_completed'>setup_completed</span>
@@ -699,13 +723,13 @@
699
723
  <pre class="lines">
700
724
 
701
725
 
702
- 30
703
- 31
704
- 32
705
- 33</pre>
726
+ 35
727
+ 36
728
+ 37
729
+ 38</pre>
706
730
  </td>
707
731
  <td>
708
- <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 30</span>
732
+ <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 35</span>
709
733
 
710
734
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span><span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
711
735
  <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -714,6 +738,47 @@
714
738
  </td>
715
739
  </tr>
716
740
  </table>
741
+ </div>
742
+
743
+ <div class="method_details ">
744
+ <h3 class="signature " id="form_collection-class_method">
745
+
746
+ .<strong>form_collection</strong> &#x21d2; <tt>Object</tt>
747
+
748
+
749
+
750
+
751
+
752
+ </h3><div class="docstring">
753
+ <div class="discussion">
754
+
755
+ <p>Returns an array of tuples [label, key] suitable for passing as a collection to some form input helpers</p>
756
+
757
+
758
+ </div>
759
+ </div>
760
+ <div class="tags">
761
+
762
+
763
+ </div><table class="source_code">
764
+ <tr>
765
+ <td>
766
+ <pre class="lines">
767
+
768
+
769
+ 29
770
+ 30
771
+ 31</pre>
772
+ </td>
773
+ <td>
774
+ <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 29</span>
775
+
776
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_form_collection'>form_collection</span>
777
+ <span class='id identifier rubyid_entries_list'>entries_list</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_el'>el</span><span class='op'>|</span> <span class='lbracket'>[</span><span class='id identifier rubyid_el'>el</span><span class='period'>.</span><span class='id identifier rubyid_label'>label</span><span class='comma'>,</span> <span class='id identifier rubyid_el'>el</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rbracket'>]</span> <span class='rbrace'>}</span>
778
+ <span class='kw'>end</span></pre>
779
+ </td>
780
+ </tr>
781
+ </table>
717
782
  </div>
718
783
 
719
784
  <div class="method_details ">
@@ -795,12 +860,12 @@
795
860
  <pre class="lines">
796
861
 
797
862
 
798
- 62
799
- 63
800
- 64</pre>
863
+ 67
864
+ 68
865
+ 69</pre>
801
866
  </td>
802
867
  <td>
803
- <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 62</span>
868
+ <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 67</span>
804
869
 
805
870
  <span class='kw'>def</span> <span class='op'>==</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
806
871
  <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_key'>key</span> <span class='op'>==</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span>
@@ -834,12 +899,12 @@
834
899
  <pre class="lines">
835
900
 
836
901
 
837
- 71
838
- 72
839
- 73</pre>
902
+ 76
903
+ 77
904
+ 78</pre>
840
905
  </td>
841
906
  <td>
842
- <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 71</span>
907
+ <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 76</span>
843
908
 
844
909
  <span class='kw'>def</span> <span class='id identifier rubyid_inspect'>inspect</span>
845
910
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>#&lt;</span><span class='embexpr_beg'>#{</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_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>&lt;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='embexpr_end'>}</span><span class='tstring_content'>&gt;:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_hash'>hash</span><span class='embexpr_end'>}</span><span class='tstring_content'>&gt;</span><span class='tstring_end'>&quot;</span></span>
@@ -875,12 +940,12 @@
875
940
  <pre class="lines">
876
941
 
877
942
 
878
- 67
879
- 68
880
- 69</pre>
943
+ 72
944
+ 73
945
+ 74</pre>
881
946
  </td>
882
947
  <td>
883
- <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 67</span>
948
+ <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 72</span>
884
949
 
885
950
  <span class='kw'>def</span> <span class='id identifier rubyid_label'>label</span>
886
951
  <span class='const'>I18n</span><span class='period'>.</span><span class='id identifier rubyid_t'>t</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</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_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_demodulize'>demodulize</span><span class='embexpr_end'>}</span><span class='tstring_content'>|</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_humanize'>humanize</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
@@ -914,12 +979,12 @@
914
979
  <pre class="lines">
915
980
 
916
981
 
917
- 75
918
- 76
919
- 77</pre>
982
+ 80
983
+ 81
984
+ 82</pre>
920
985
  </td>
921
986
  <td>
922
- <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 75</span>
987
+ <pre class="code"><span class="info file"># File 'lib/anchormodel.rb', line 80</span>
923
988
 
924
989
  <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
925
990
  <span class='id identifier rubyid_inspect'>inspect</span>
@@ -934,9 +999,9 @@
934
999
  </div>
935
1000
 
936
1001
  <div id="footer">
937
- Generated on Wed Apr 24 17:01:46 2024 by
1002
+ Generated on Sat Apr 27 10:18:33 2024 by
938
1003
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
939
- 0.9.28 (ruby-3.2.2).
1004
+ 0.9.34 (ruby-3.2.2).
940
1005
  </div>
941
1006
 
942
1007
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: AnchormodelGenerator
8
8
 
9
- &mdash; Documentation by YARD 0.9.28
9
+ &mdash; Documentation by YARD 0.9.34
10
10
 
11
11
  </title>
12
12
 
@@ -191,9 +191,9 @@
191
191
  </div>
192
192
 
193
193
  <div id="footer">
194
- Generated on Wed Apr 24 17:01:46 2024 by
194
+ Generated on Sat Apr 27 10:18:33 2024 by
195
195
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
196
- 0.9.28 (ruby-3.2.2).
196
+ 0.9.34 (ruby-3.2.2).
197
197
  </div>
198
198
 
199
199
  </div>