anchormodel 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d456af4c2d49001651318271fd70c8e008894cf7b2a0a1beeb0bc28e3f8aa227
4
- data.tar.gz: 4801071bbe71a06f16717b25ff657a90989bdd801624eecc6388bdea5cbb216e
3
+ metadata.gz: c228e4a1d684b6404a0f1376566680fecb2b458b5e0d5f9df0b41ab11b3facba
4
+ data.tar.gz: db3a4648ac8d41ca4bed6d9d540777e4c9a42b9e52e3500df2d5826429ef5b59
5
5
  SHA512:
6
- metadata.gz: fd9483b0df7c815393b58e7f2b39176f819f6f94c3cc06cce7722daba928f938a0eeb4c55659225d3d6dd25f4a278da75c115b3faf67adff6b5481627b35d186
7
- data.tar.gz: 1fce2625be81e4f348c3ddd9198a9dec75d2b39454322059adffee8714aa65c8758ad877655862c1e86c8e4219ba7e1ffbba2a78401eb6a87bcd0dd2170d5981
6
+ metadata.gz: d5a8c1d45cba54da1a1061f9c680111cbdfbe00daa33e95883540777f96bfa3f070cadfc07ffaff6898d65d8111004851e4054475e6d611e5a1d48804e635e48
7
+ data.tar.gz: bf2fcc0048940551e969112f4ad522743bddc8d4c1fd84c3a45d6fc0161e99dc006db06c0480ebbd19afef3cbaa403d6b9dcbaf4dec294b14271c4de6bdbf697
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # Unreleased
2
+
3
+ - Add boolean accessor directly to all anchormodels
4
+ - Add ActiveRecord::Enum style readers, writers and scopes to the model
5
+ - Attribute#anchor_class is now called `anchormodel_class`.
6
+
1
7
  # 0.1.0 (18.01.2023)
2
8
 
3
9
  - Remove `Anchormodels::` prefix and have anchormodels in the root namespace instead.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- anchormodel (0.0.3.edge)
4
+ anchormodel (0.1.1.edge)
5
5
  rails (~> 7.0)
6
6
 
7
7
  GEM
@@ -80,7 +80,7 @@ GEM
80
80
  crass (1.0.6)
81
81
  date (3.3.3)
82
82
  erubi (1.12.0)
83
- globalid (1.0.0)
83
+ globalid (1.0.1)
84
84
  activesupport (>= 5.0)
85
85
  i18n (1.12.0)
86
86
  concurrent-ruby (~> 1.0)
@@ -88,7 +88,7 @@ GEM
88
88
  loofah (2.19.1)
89
89
  crass (~> 1.0.2)
90
90
  nokogiri (>= 1.5.9)
91
- mail (2.8.0)
91
+ mail (2.8.0.1)
92
92
  mini_mime (>= 0.1.1)
93
93
  net-imap
94
94
  net-pop
@@ -112,7 +112,7 @@ GEM
112
112
  net-smtp (0.3.3)
113
113
  net-protocol
114
114
  nio4r (2.5.8)
115
- nokogiri (1.13.10-x86_64-linux)
115
+ nokogiri (1.14.0-x86_64-linux)
116
116
  racc (~> 1.4)
117
117
  parallel (1.22.1)
118
118
  parser (3.2.0.0)
@@ -141,7 +141,7 @@ GEM
141
141
  rails-dom-testing (2.0.3)
142
142
  activesupport (>= 4.2.0)
143
143
  nokogiri (>= 1.6)
144
- rails-html-sanitizer (1.4.4)
144
+ rails-html-sanitizer (1.5.0)
145
145
  loofah (~> 2.19, >= 2.19.1)
146
146
  railties (7.0.4)
147
147
  actionpack (= 7.0.4)
data/README.md CHANGED
@@ -44,7 +44,13 @@ meaningful, making you immediately understand what they stand for.
44
44
  This is why Anchormodel is strictly relying on String keys corresponding to the
45
45
  entries of an Anchormodel.
46
46
 
47
- # Example
47
+
48
+ # Installation
49
+
50
+ 1. Add gem to Gemfile: `gem 'anchormodel'`
51
+ 2. In `application_record.rb`, add in the class body: `include Anchormodel::ModelMixin`
52
+
53
+ # Basic example
48
54
 
49
55
  `app/anchormodels/role.rb`:
50
56
 
@@ -73,7 +79,11 @@ end
73
79
  ```ruby
74
80
  # The DB table `users` must have a String column `users.role`
75
81
  class User < ApplicationRecord
82
+ # If `users.role` has an `NOT NULL` constraint, use:
76
83
  belongs_to_anchormodel :role
84
+
85
+ # If `users.role` can be `NULL`, use the following instead:
86
+ belongs_to_anchormodel :role, optional: true
77
87
  end
78
88
  ```
79
89
 
@@ -93,9 +103,83 @@ end
93
103
 
94
104
  # Pretty print a user's role, e.g. using the Rails FastGettext gem:
95
105
  puts("User #{@user.name} has role #{@user.role.label}")
106
+
107
+ # Check whether @user has role admin
108
+ @user.role.admin? # true if and only if the role is admin (false otherwise)
96
109
  ```
97
110
 
98
- # Installation
111
+ # Rails Enum style model methods
99
112
 
100
- 1. Add gem to Gemfile: `gem 'anchormodel'`
101
- 2. In `application_record.rb`, add in the class body: `include Anchormodel::ModelMixin`
113
+ By default, Anchormodel adds three kinds of methods for each key to the model:
114
+
115
+ - a reader (getter)
116
+ - a writer (setter)
117
+ - a Rails scope
118
+
119
+ For instance:
120
+
121
+ ```ruby
122
+ class User < ApplicationRecord
123
+ belongs_to_anchormodel :role # where Role has keys :guest, :manager and :admin
124
+ belongs_to_anchormodel :shape # where Shape has keys :circle and :rectangle
125
+ end
126
+
127
+ # User now implements the following methods, given that @user is retrieved as follows:
128
+ @user = User.first # for example
129
+
130
+ # Readers
131
+ @user.guest? # same as @user.role.guest?
132
+ @user.manager?
133
+ @user.admin?
134
+ @user.rectangle? # same as @user.shape.rectangle?
135
+ @user.circle?
136
+ # Writers
137
+ @user.guest! # same as @user.role = Role.find(:guest)
138
+ @user.manager!
139
+ @user.admin!
140
+ @user.rectangle! # same as @user.shape = Shape.find(:rectangle)
141
+ @user.circle!
142
+ # Scopes
143
+ User.guest # same as User.where(role: 'guest')
144
+ User.manager
145
+ User.admin
146
+ User.rectangle # same as User.where(shape: 'rectangle')
147
+ User.circle
148
+ ```
149
+
150
+ This behavior is similar as the one from Rails Enums. If you want to disable it, use:
151
+
152
+ ```ruby
153
+ class User < ApplicationRecord
154
+ belongs_to_anchormodel :role, model_readers: false, model_writers: false, model_scopes: false
155
+ # or, equivalent, to disable all at once:
156
+ belongs_to_anchormodel :role, model_methods: false
157
+ end
158
+ ```
159
+
160
+ # Calling a column differently than the Anchormodel
161
+
162
+ If your column name (and the model's attribute) is called differently than the Anchormodel, you may give the Anchormodel's class as the second argument. For example:
163
+
164
+ ```ruby
165
+ # app/anchormodels/color.rb
166
+ class Color < Anchormodel
167
+ new :green
168
+ new :red
169
+ end
170
+
171
+ # app/models/user.rb
172
+ class User < ApplicationRecord
173
+ belongs_to_anchormodel :favorite_color, Color
174
+ end
175
+ ```
176
+
177
+ ## Having multiple attributes to the same Anchormodel
178
+
179
+ If you want to have multiple attributes in the same model pointing to the same Anchormodel, you need to disable `model_methods` for at least one of them (otherwise the model methods will clash in your model class):
180
+
181
+ ```ruby
182
+ # app/models/user.rb
183
+ belongs_to_anchormodel :role
184
+ belongs_to_anchormodel :secondary_role, Role, model_methods: false
185
+ ```
data/anchormodel.gemspec CHANGED
@@ -2,17 +2,17 @@
2
2
  # This file is auto-generated via: 'rake gemspec'.
3
3
 
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: anchormodel 0.1.0 ruby lib
5
+ # stub: anchormodel 0.1.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "anchormodel".freeze
9
- s.version = "0.1.0"
9
+ s.version = "0.1.1"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Sandro Kalbermatter".freeze]
14
- s.date = "2023-01-18"
15
- s.files = [".gitignore".freeze, ".ruby-version".freeze, ".yardopts".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "Gemfile.lock".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "anchormodel.gemspec".freeze, "doc/Anchormodel.html".freeze, "doc/Anchormodel/ActiveModelTypeValue.html".freeze, "doc/Anchormodel/Attribute.html".freeze, "doc/Anchormodel/ModelMixin.html".freeze, "doc/Anchormodel/Version.html".freeze, "doc/_index.html".freeze, "doc/class_list.html".freeze, "doc/css/common.css".freeze, "doc/css/full_list.css".freeze, "doc/css/style.css".freeze, "doc/file.README.html".freeze, "doc/file_list.html".freeze, "doc/frames.html".freeze, "doc/index.html".freeze, "doc/js/app.js".freeze, "doc/js/full_list.js".freeze, "doc/js/jquery.js".freeze, "doc/method_list.html".freeze, "doc/top-level-namespace.html".freeze, "lib/anchormodel.rb".freeze, "lib/anchormodel/active_model_type_value.rb".freeze, "lib/anchormodel/attribute.rb".freeze, "lib/anchormodel/model_mixin.rb".freeze, "lib/anchormodel/version.rb".freeze, "logo.svg".freeze, "test/active_record_model/user_test.rb".freeze, "test/dummy/.gitignore".freeze, "test/dummy/Rakefile".freeze, "test/dummy/app/anchormodels/locale.rb".freeze, "test/dummy/app/anchormodels/role.rb".freeze, "test/dummy/app/helpers/application_helper.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/user.rb".freeze, "test/dummy/bin/rails".freeze, "test/dummy/bin/rake".freeze, "test/dummy/bin/setup".freeze, "test/dummy/config.ru".freeze, "test/dummy/config/application.rb".freeze, "test/dummy/config/boot.rb".freeze, "test/dummy/config/credentials.yml.enc".freeze, "test/dummy/config/database.yml".freeze, "test/dummy/config/environment.rb".freeze, "test/dummy/config/environments/test.rb".freeze, "test/dummy/config/initializers/content_security_policy.rb".freeze, "test/dummy/config/initializers/filter_parameter_logging.rb".freeze, "test/dummy/config/initializers/inflections.rb".freeze, "test/dummy/config/initializers/permissions_policy.rb".freeze, "test/dummy/config/locales/en.yml".freeze, "test/dummy/config/puma.rb".freeze, "test/dummy/config/routes.rb".freeze, "test/dummy/db/migrate/20230107173151_create_users.rb".freeze, "test/dummy/db/schema.rb".freeze, "test/dummy/db/seeds.rb".freeze, "test/dummy/lib/tasks/.keep".freeze, "test/dummy/log/.keep".freeze, "test/dummy/tmp/.keep".freeze, "test/dummy/tmp/pids/.keep".freeze, "test/test_helper.rb".freeze]
14
+ s.date = "2023-01-24"
15
+ s.files = [".gitignore".freeze, ".ruby-version".freeze, ".yardopts".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "Gemfile.lock".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "anchormodel.gemspec".freeze, "bin/rails".freeze, "doc/Anchormodel.html".freeze, "doc/Anchormodel/ActiveModelTypeValue.html".freeze, "doc/Anchormodel/Attribute.html".freeze, "doc/Anchormodel/ModelMixin.html".freeze, "doc/Anchormodel/Version.html".freeze, "doc/_index.html".freeze, "doc/class_list.html".freeze, "doc/css/common.css".freeze, "doc/css/full_list.css".freeze, "doc/css/style.css".freeze, "doc/file.README.html".freeze, "doc/file_list.html".freeze, "doc/frames.html".freeze, "doc/index.html".freeze, "doc/js/app.js".freeze, "doc/js/full_list.js".freeze, "doc/js/jquery.js".freeze, "doc/method_list.html".freeze, "doc/top-level-namespace.html".freeze, "lib/anchormodel.rb".freeze, "lib/anchormodel/active_model_type_value.rb".freeze, "lib/anchormodel/attribute.rb".freeze, "lib/anchormodel/model_mixin.rb".freeze, "lib/anchormodel/version.rb".freeze, "logo.svg".freeze, "test/active_record_model/user_test.rb".freeze, "test/dummy/.gitignore".freeze, "test/dummy/Rakefile".freeze, "test/dummy/app/anchormodels/locale.rb".freeze, "test/dummy/app/anchormodels/role.rb".freeze, "test/dummy/app/helpers/application_helper.rb".freeze, "test/dummy/app/models/application_record.rb".freeze, "test/dummy/app/models/concerns/.keep".freeze, "test/dummy/app/models/user.rb".freeze, "test/dummy/bin/rails".freeze, "test/dummy/bin/rake".freeze, "test/dummy/bin/setup".freeze, "test/dummy/config.ru".freeze, "test/dummy/config/application.rb".freeze, "test/dummy/config/boot.rb".freeze, "test/dummy/config/credentials.yml.enc".freeze, "test/dummy/config/database.yml".freeze, "test/dummy/config/environment.rb".freeze, "test/dummy/config/environments/test.rb".freeze, "test/dummy/config/initializers/content_security_policy.rb".freeze, "test/dummy/config/initializers/filter_parameter_logging.rb".freeze, "test/dummy/config/initializers/inflections.rb".freeze, "test/dummy/config/initializers/permissions_policy.rb".freeze, "test/dummy/config/locales/en.yml".freeze, "test/dummy/config/puma.rb".freeze, "test/dummy/config/routes.rb".freeze, "test/dummy/db/migrate/20230107173151_create_users.rb".freeze, "test/dummy/db/schema.rb".freeze, "test/dummy/db/seeds.rb".freeze, "test/dummy/lib/tasks/.keep".freeze, "test/dummy/log/.keep".freeze, "test/dummy/tmp/.keep".freeze, "test/dummy/tmp/pids/.keep".freeze, "test/test_helper.rb".freeze]
16
16
  s.homepage = "https://github.com/kalsan/anchormodel".freeze
17
17
  s.licenses = ["LGPL-3.0-or-later".freeze]
18
18
  s.required_ruby_version = Gem::Requirement.new(">= 3.0.0".freeze)
data/bin/rails ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ # Wrapper for easy interaction with the dummy rails app
4
+
5
+ export RAILS_ENV=test
6
+ cd test/dummy
7
+ bin/rails $@
@@ -429,8 +429,8 @@
429
429
  <pre class="code"><span class="info file"># File 'lib/anchormodel/active_model_type_value.rb', line 29</span>
430
430
 
431
431
  <span class='kw'>def</span> <span class='id identifier rubyid_deserialize'>deserialize</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
432
- <span class='kw'>return</span> <span class='id identifier rubyid_value'>value</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchor_class'>anchor_class</span><span class='rparen'>)</span>
433
- <span class='kw'>return</span> <span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchor_class'>anchor_class</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
432
+ <span class='kw'>return</span> <span class='id identifier rubyid_value'>value</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span><span class='rparen'>)</span>
433
+ <span class='kw'>return</span> <span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
434
434
  <span class='kw'>end</span></pre>
435
435
  </td>
436
436
  </tr>
@@ -485,11 +485,11 @@
485
485
  <span class='kw'>def</span> <span class='id identifier rubyid_serialize'>serialize</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
486
486
  <span class='kw'>return</span> <span class='kw'>case</span> <span class='id identifier rubyid_value'>value</span>
487
487
  <span class='kw'>when</span> <span class='const'>Symbol</span><span class='comma'>,</span> <span class='const'>String</span>
488
- <span class='kw'>unless</span> <span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchor_class'>anchor_class</span><span class='period'>.</span><span class='id identifier rubyid_valid_keys'>valid_keys</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rparen'>)</span>
488
+ <span class='kw'>unless</span> <span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span><span class='period'>.</span><span class='id identifier rubyid_valid_keys'>valid_keys</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='rparen'>)</span>
489
489
  <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'>Attempt to set </span><span class='embexpr_beg'>#{</span><span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_attribute_name'>attribute_name</span><span class='embexpr_end'>}</span><span class='tstring_content'> to unsupported key </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
490
490
  <span class='kw'>end</span>
491
491
  <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
492
- <span class='kw'>when</span> <span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchor_class'>anchor_class</span>
492
+ <span class='kw'>when</span> <span class='ivar'>@attribute</span><span class='period'>.</span><span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span>
493
493
  <span class='id identifier rubyid_value'>value</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>
494
494
  <span class='kw'>when</span> <span class='kw'>nil</span>
495
495
  <span class='kw'>nil</span>
@@ -507,7 +507,7 @@
507
507
  </div>
508
508
 
509
509
  <div id="footer">
510
- Generated on Wed Jan 18 11:24:44 2023 by
510
+ Generated on Tue Jan 24 20:27:59 2023 by
511
511
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
512
512
  0.9.28 (ruby-3.1.3).
513
513
  </div>
@@ -120,7 +120,7 @@
120
120
  <li class="public ">
121
121
  <span class="summary_signature">
122
122
 
123
- <a href="#attribute_name-instance_method" title="#attribute_name (instance method)">#<strong>attribute_name</strong> &#x21d2; Object </a>
123
+ <a href="#anchormodel_class-instance_method" title="#anchormodel_class (instance method)">#<strong>anchormodel_class</strong> &#x21d2; Object </a>
124
124
 
125
125
 
126
126
 
@@ -147,7 +147,7 @@
147
147
  <li class="public ">
148
148
  <span class="summary_signature">
149
149
 
150
- <a href="#optional-instance_method" title="#optional (instance method)">#<strong>optional</strong> &#x21d2; Object </a>
150
+ <a href="#attribute_name-instance_method" title="#attribute_name (instance method)">#<strong>attribute_name</strong> &#x21d2; Object </a>
151
151
 
152
152
 
153
153
 
@@ -171,23 +171,10 @@
171
171
  </li>
172
172
 
173
173
 
174
- </ul>
175
-
176
-
177
-
178
-
179
-
180
- <h2>
181
- Instance Method Summary
182
- <small><a href="#" class="summary_toggle">collapse</a></small>
183
- </h2>
184
-
185
- <ul class="summary">
186
-
187
- <li class="public ">
174
+ <li class="public ">
188
175
  <span class="summary_signature">
189
176
 
190
- <a href="#anchor_class-instance_method" title="#anchor_class (instance method)">#<strong>anchor_class</strong> &#x21d2; Object </a>
177
+ <a href="#optional-instance_method" title="#optional (instance method)">#<strong>optional</strong> &#x21d2; Object </a>
191
178
 
192
179
 
193
180
 
@@ -195,23 +182,39 @@
195
182
 
196
183
 
197
184
 
185
+
186
+ <span class="note title readonly">readonly</span>
187
+
188
+
189
+
198
190
 
199
191
 
200
192
 
201
193
 
202
194
 
203
195
 
204
- <span class="summary_desc"><div class='inline'>
205
- <p>Getter for the Anchormodel class based on the name passed to the initializer.</p>
206
- </div></span>
196
+ <span class="summary_desc"><div class='inline'></div></span>
207
197
 
208
198
  </li>
209
199
 
200
+
201
+ </ul>
202
+
203
+
204
+
205
+
206
+
207
+ <h2>
208
+ Instance Method Summary
209
+ <small><a href="#" class="summary_toggle">collapse</a></small>
210
+ </h2>
211
+
212
+ <ul class="summary">
210
213
 
211
214
  <li class="public ">
212
215
  <span class="summary_signature">
213
216
 
214
- <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(model_class, attribute_name, anchor_class_name = nil, optional = false) &#x21d2; Attribute </a>
217
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(model_class, attribute_name, anchormodel_class = nil, optional = false) &#x21d2; Attribute </a>
215
218
 
216
219
 
217
220
 
@@ -243,7 +246,7 @@
243
246
  <div class="method_details first">
244
247
  <h3 class="signature first" id="initialize-instance_method">
245
248
 
246
- #<strong>initialize</strong>(model_class, attribute_name, anchor_class_name = nil, optional = false) &#x21d2; <tt><span class='object_link'><a href="" title="Anchormodel::Attribute (class)">Attribute</a></span></tt>
249
+ #<strong>initialize</strong>(model_class, attribute_name, anchormodel_class = nil, optional = false) &#x21d2; <tt><span class='object_link'><a href="" title="Anchormodel::Attribute (class)">Attribute</a></span></tt>
247
250
 
248
251
 
249
252
 
@@ -295,10 +298,10 @@
295
298
 
296
299
  <li>
297
300
 
298
- <span class='name'>anchor_class_name</span>
301
+ <span class='name'>anchormodel_class</span>
299
302
 
300
303
 
301
- <span class='type'>(<tt>String</tt>)</span>
304
+ <span class='type'>(<tt>Class</tt>)</span>
302
305
 
303
306
 
304
307
  <em class="default">(defaults to: <tt>nil</tt>)</em>
@@ -306,7 +309,7 @@
306
309
 
307
310
  &mdash;
308
311
  <div class='inline'>
309
- <p>Name of the Anchormodel class (omit if attribute <code>:foo_bar</code> holds an <code>FooBar</code>)</p>
312
+ <p>Class of the Anchormodel (omit if attribute <code>:foo_bar</code> holds an <code>FooBar</code>)</p>
310
313
  </div>
311
314
 
312
315
  </li>
@@ -338,20 +341,20 @@
338
341
  <pre class="lines">
339
342
 
340
343
 
341
- 12
342
344
  13
343
345
  14
344
346
  15
345
347
  16
346
- 17</pre>
348
+ 17
349
+ 18</pre>
347
350
  </td>
348
351
  <td>
349
- <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 12</span>
352
+ <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 13</span>
350
353
 
351
- <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</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_anchor_class_name'>anchor_class_name</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_optional'>optional</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
354
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</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> <span class='id identifier rubyid_optional'>optional</span> <span class='op'>=</span> <span class='kw'>false</span><span class='rparen'>)</span>
352
355
  <span class='ivar'>@model_class</span> <span class='op'>=</span> <span class='id identifier rubyid_model_class'>model_class</span>
353
356
  <span class='ivar'>@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>
354
- <span class='ivar'>@anchor_class_name</span> <span class='op'>=</span> <span class='id identifier rubyid_anchor_class_name'>anchor_class_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_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_classify'>classify</span>
357
+ <span class='ivar'>@anchormodel_class</span> <span class='op'>=</span> <span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span>
355
358
  <span class='ivar'>@optional</span> <span class='op'>=</span> <span class='id identifier rubyid_optional'>optional</span>
356
359
  <span class='kw'>end</span></pre>
357
360
  </td>
@@ -367,9 +370,9 @@
367
370
 
368
371
  <span id=""></span>
369
372
  <div class="method_details first">
370
- <h3 class="signature first" id="attribute_name-instance_method">
373
+ <h3 class="signature first" id="anchormodel_class-instance_method">
371
374
 
372
- #<strong>attribute_name</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
375
+ #<strong>anchormodel_class</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
373
376
 
374
377
 
375
378
 
@@ -390,15 +393,15 @@
390
393
  <pre class="lines">
391
394
 
392
395
 
393
- 5
394
396
  6
395
- 7</pre>
397
+ 7
398
+ 8</pre>
396
399
  </td>
397
400
  <td>
398
- <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 5</span>
401
+ <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 6</span>
399
402
 
400
- <span class='kw'>def</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span>
401
- <span class='ivar'>@attribute_name</span>
403
+ <span class='kw'>def</span> <span class='id identifier rubyid_anchormodel_class'>anchormodel_class</span>
404
+ <span class='ivar'>@anchormodel_class</span>
402
405
  <span class='kw'>end</span></pre>
403
406
  </td>
404
407
  </tr>
@@ -408,9 +411,9 @@
408
411
 
409
412
  <span id=""></span>
410
413
  <div class="method_details ">
411
- <h3 class="signature " id="optional-instance_method">
414
+ <h3 class="signature " id="attribute_name-instance_method">
412
415
 
413
- #<strong>optional</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
416
+ #<strong>attribute_name</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
414
417
 
415
418
 
416
419
 
@@ -431,32 +434,27 @@
431
434
  <pre class="lines">
432
435
 
433
436
 
437
+ 5
434
438
  6
435
- 7
436
- 8</pre>
439
+ 7</pre>
437
440
  </td>
438
441
  <td>
439
- <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 6</span>
442
+ <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 5</span>
440
443
 
441
- <span class='kw'>def</span> <span class='id identifier rubyid_optional'>optional</span>
442
- <span class='ivar'>@optional</span>
444
+ <span class='kw'>def</span> <span class='id identifier rubyid_attribute_name'>attribute_name</span>
445
+ <span class='ivar'>@attribute_name</span>
443
446
  <span class='kw'>end</span></pre>
444
447
  </td>
445
448
  </tr>
446
449
  </table>
447
450
  </div>
448
451
 
449
- </div>
450
-
451
-
452
- <div id="instance_method_details" class="method_details_list">
453
- <h2>Instance Method Details</h2>
454
-
455
-
456
- <div class="method_details first">
457
- <h3 class="signature first" id="anchor_class-instance_method">
452
+
453
+ <span id=""></span>
454
+ <div class="method_details ">
455
+ <h3 class="signature " id="optional-instance_method">
458
456
 
459
- #<strong>anchor_class</strong> &#x21d2; <tt>Object</tt>
457
+ #<strong>optional</strong> &#x21d2; <tt>Object</tt> <span class="extras">(readonly)</span>
460
458
 
461
459
 
462
460
 
@@ -465,8 +463,6 @@
465
463
  </h3><div class="docstring">
466
464
  <div class="discussion">
467
465
 
468
- <p>Getter for the Anchormodel class based on the name passed to the initializer. We are loading the anchor class lazily, because the model mixin instanciates this statically -&gt; avoid premature anchor class loading</p>
469
-
470
466
 
471
467
  </div>
472
468
  </div>
@@ -479,15 +475,15 @@
479
475
  <pre class="lines">
480
476
 
481
477
 
482
- 21
483
- 22
484
- 23</pre>
478
+ 7
479
+ 8
480
+ 9</pre>
485
481
  </td>
486
482
  <td>
487
- <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 21</span>
483
+ <pre class="code"><span class="info file"># File 'lib/anchormodel/attribute.rb', line 7</span>
488
484
 
489
- <span class='kw'>def</span> <span class='id identifier rubyid_anchor_class'>anchor_class</span>
490
- <span class='ivar'>@anchor_class</span> <span class='op'>||=</span> <span class='ivar'>@anchor_class_name</span><span class='period'>.</span><span class='id identifier rubyid_constantize'>constantize</span>
485
+ <span class='kw'>def</span> <span class='id identifier rubyid_optional'>optional</span>
486
+ <span class='ivar'>@optional</span>
491
487
  <span class='kw'>end</span></pre>
492
488
  </td>
493
489
  </tr>
@@ -496,10 +492,11 @@
496
492
 
497
493
  </div>
498
494
 
495
+
499
496
  </div>
500
497
 
501
498
  <div id="footer">
502
- Generated on Wed Jan 18 11:24:43 2023 by
499
+ Generated on Tue Jan 24 20:27:59 2023 by
503
500
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
504
501
  0.9.28 (ruby-3.1.3).
505
502
  </div>