anchormodel 0.2.1 → 0.2.2
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/.ruby-version +1 -1
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +3 -3
- data/VERSION +1 -1
- data/anchormodel.gemspec +4 -4
- data/doc/Anchormodel/ActiveModelTypeValueMulti.html +1 -1
- data/doc/Anchormodel/ActiveModelTypeValueSingle.html +1 -1
- data/doc/Anchormodel/Attribute.html +1 -1
- data/doc/Anchormodel/ModelMixin.html +1 -1
- data/doc/Anchormodel/SimpleFormInputs/Helpers/AnchormodelInputsCommon.html +1 -1
- data/doc/Anchormodel/SimpleFormInputs/Helpers.html +1 -1
- data/doc/Anchormodel/SimpleFormInputs.html +1 -1
- data/doc/Anchormodel/Util.html +1 -1
- data/doc/Anchormodel/Version.html +1 -1
- data/doc/Anchormodel.html +1 -1
- data/doc/AnchormodelCheckBoxesInput.html +1 -1
- data/doc/AnchormodelGenerator.html +1 -1
- data/doc/AnchormodelInput.html +1 -1
- data/doc/AnchormodelRadioButtonsInput.html +1 -1
- data/doc/_index.html +1 -1
- data/doc/file.README.html +1 -1
- data/doc/index.html +1 -1
- data/doc/top-level-namespace.html +1 -1
- data/lib/anchormodel/simple_form_inputs/helpers/anchormodel_inputs_common.rb +11 -5
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a9eebd14815541c3006409bb03f45b0155db2eb083511a09f228bf57ee68dd8a
|
|
4
|
+
data.tar.gz: a359a0970ec983f9f50de59edb2355fa960db401a03febed48ade509d1e977ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1a4df45b4cbbc8c5235ddd8b52cb1e79639f2d253ffbd627e151fdeef1102584ea9280f0b383f5ac608f395a6b26d946e299b2e810e2609509d1147e2c28f1d5
|
|
7
|
+
data.tar.gz: 90598b9ec18955a30519e8b0fae7e8986f16ecc9c7ee00f8c9d8025118199680e735914527bc3ea35ff3e12800e67f66feacd7695af0951adcc1350063216d72
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# 0.2.2 (14.08.2024)
|
|
2
|
+
|
|
3
|
+
- Allow passing `anchormodel_attribute` explicitely to `anchormodel` input and enhance error message
|
|
4
|
+
- In `anchormodel` input, fallback to searching selected value in input html options as well
|
|
5
|
+
- Update ruby version to 3.2.2
|
|
6
|
+
|
|
1
7
|
# 0.2.1 (22.05.2024)
|
|
2
8
|
|
|
3
9
|
- Stop enforcing include_blank for SimpleForm, due to https://github.com/heartcombo/simple_form/issues/1427
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
anchormodel (0.2.
|
|
4
|
+
anchormodel (0.2.2)
|
|
5
5
|
rails (~> 7.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -102,7 +102,7 @@ GEM
|
|
|
102
102
|
builder
|
|
103
103
|
minitest (>= 5.0)
|
|
104
104
|
ruby-progressbar
|
|
105
|
-
net-imap (0.4.
|
|
105
|
+
net-imap (0.4.12)
|
|
106
106
|
date
|
|
107
107
|
net-protocol
|
|
108
108
|
net-pop (0.1.2)
|
|
@@ -187,7 +187,7 @@ GEM
|
|
|
187
187
|
webrick (~> 1.7.0)
|
|
188
188
|
yard-activesupport-concern (0.0.1)
|
|
189
189
|
yard (>= 0.8)
|
|
190
|
-
zeitwerk (2.6.
|
|
190
|
+
zeitwerk (2.6.15)
|
|
191
191
|
|
|
192
192
|
PLATFORMS
|
|
193
193
|
x86_64-linux
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.2.
|
|
1
|
+
0.2.2
|
data/anchormodel.gemspec
CHANGED
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
# This file is auto-generated via: 'rake gemspec'.
|
|
3
3
|
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: anchormodel 0.2.
|
|
5
|
+
# stub: anchormodel 0.2.2 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
8
|
s.name = "anchormodel".freeze
|
|
9
|
-
s.version = "0.2.
|
|
9
|
+
s.version = "0.2.2".freeze
|
|
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 = "2024-
|
|
14
|
+
s.date = "2024-08-14"
|
|
15
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, "VERSION".freeze, "anchormodel.gemspec".freeze, "bin/rails".freeze, "doc/Anchormodel.html".freeze, "doc/Anchormodel/ActiveModelTypeValue.html".freeze, "doc/Anchormodel/ActiveModelTypeValueMulti.html".freeze, "doc/Anchormodel/ActiveModelTypeValueSingle.html".freeze, "doc/Anchormodel/Attribute.html".freeze, "doc/Anchormodel/ModelMixin.html".freeze, "doc/Anchormodel/SimpleFormInputs.html".freeze, "doc/Anchormodel/SimpleFormInputs/Helpers.html".freeze, "doc/Anchormodel/SimpleFormInputs/Helpers/AnchormodelInputsCommon.html".freeze, "doc/Anchormodel/Util.html".freeze, "doc/Anchormodel/Version.html".freeze, "doc/AnchormodelCheckBoxesInput.html".freeze, "doc/AnchormodelGenerator.html".freeze, "doc/AnchormodelInput.html".freeze, "doc/AnchormodelRadioButtonsInput.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_multi.rb".freeze, "lib/anchormodel/active_model_type_value_single.rb".freeze, "lib/anchormodel/attribute.rb".freeze, "lib/anchormodel/model_mixin.rb".freeze, "lib/anchormodel/simple_form_inputs/anchormodel_check_boxes_input.rb".freeze, "lib/anchormodel/simple_form_inputs/anchormodel_input.rb".freeze, "lib/anchormodel/simple_form_inputs/anchormodel_radio_buttons_input.rb".freeze, "lib/anchormodel/simple_form_inputs/helpers/anchormodel_inputs_common.rb".freeze, "lib/anchormodel/util.rb".freeze, "lib/anchormodel/version.rb".freeze, "lib/generators/anchormodel/USAGE".freeze, "lib/generators/anchormodel/anchormodel_generator.rb".freeze, "lib/generators/anchormodel/templates/anchormodel.rb.erb".freeze, "logo.svg".freeze, "test/active_record_model/user_test.rb".freeze, "test/dummy/.gitignore".freeze, "test/dummy/Rakefile".freeze, "test/dummy/app/anchormodels/animal.rb".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/migrate/20240425182000_add_animals_to_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)
|
|
19
|
-
s.rubygems_version = "3.5.
|
|
19
|
+
s.rubygems_version = "3.5.11".freeze
|
|
20
20
|
s.summary = "Bringing object-oriented programming to Rails enums".freeze
|
|
21
21
|
|
|
22
22
|
s.specification_version = 4
|
|
@@ -400,7 +400,7 @@
|
|
|
400
400
|
</div>
|
|
401
401
|
|
|
402
402
|
<div id="footer">
|
|
403
|
-
Generated on Wed May 22 11:24:
|
|
403
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
404
404
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
405
405
|
0.9.34 (ruby-3.2.2).
|
|
406
406
|
</div>
|
|
@@ -687,7 +687,7 @@
|
|
|
687
687
|
</div>
|
|
688
688
|
|
|
689
689
|
<div id="footer">
|
|
690
|
-
Generated on Wed May 22 11:24:
|
|
690
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
691
691
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
692
692
|
0.9.34 (ruby-3.2.2).
|
|
693
693
|
</div>
|
|
@@ -596,7 +596,7 @@
|
|
|
596
596
|
</div>
|
|
597
597
|
|
|
598
598
|
<div id="footer">
|
|
599
|
-
Generated on Wed May 22 11:24:
|
|
599
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
600
600
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
601
601
|
0.9.34 (ruby-3.2.2).
|
|
602
602
|
</div>
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
</div>
|
|
113
113
|
|
|
114
114
|
<div id="footer">
|
|
115
|
-
Generated on Wed May 22 11:24:
|
|
115
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
116
116
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
117
117
|
0.9.34 (ruby-3.2.2).
|
|
118
118
|
</div>
|
|
@@ -257,7 +257,7 @@ Affected object: </span><span class='embexpr_beg'>#{</span><span class='id ident
|
|
|
257
257
|
</div>
|
|
258
258
|
|
|
259
259
|
<div id="footer">
|
|
260
|
-
Generated on Wed May 22 11:24:
|
|
260
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
261
261
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
262
262
|
0.9.34 (ruby-3.2.2).
|
|
263
263
|
</div>
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
116
|
<div id="footer">
|
|
117
|
-
Generated on Wed May 22 11:24:
|
|
117
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
118
118
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
119
119
|
0.9.34 (ruby-3.2.2).
|
|
120
120
|
</div>
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
116
|
<div id="footer">
|
|
117
|
-
Generated on Wed May 22 11:24:
|
|
117
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
118
118
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
119
119
|
0.9.34 (ruby-3.2.2).
|
|
120
120
|
</div>
|
data/doc/Anchormodel/Util.html
CHANGED
|
@@ -602,7 +602,7 @@
|
|
|
602
602
|
</div>
|
|
603
603
|
|
|
604
604
|
<div id="footer">
|
|
605
|
-
Generated on Wed May 22 11:24:
|
|
605
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
606
606
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
607
607
|
0.9.34 (ruby-3.2.2).
|
|
608
608
|
</div>
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
</div>
|
|
130
130
|
|
|
131
131
|
<div id="footer">
|
|
132
|
-
Generated on Wed May 22 11:24:
|
|
132
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
133
133
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
134
134
|
0.9.34 (ruby-3.2.2).
|
|
135
135
|
</div>
|
data/doc/Anchormodel.html
CHANGED
|
@@ -999,7 +999,7 @@
|
|
|
999
999
|
</div>
|
|
1000
1000
|
|
|
1001
1001
|
<div id="footer">
|
|
1002
|
-
Generated on Wed May 22 11:24:
|
|
1002
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
1003
1003
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1004
1004
|
0.9.34 (ruby-3.2.2).
|
|
1005
1005
|
</div>
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
</div>
|
|
131
131
|
|
|
132
132
|
<div id="footer">
|
|
133
|
-
Generated on Wed May 22 11:24:
|
|
133
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
134
134
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
135
135
|
0.9.34 (ruby-3.2.2).
|
|
136
136
|
</div>
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
</div>
|
|
192
192
|
|
|
193
193
|
<div id="footer">
|
|
194
|
-
Generated on Wed May 22 11:24:
|
|
194
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
195
195
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
196
196
|
0.9.34 (ruby-3.2.2).
|
|
197
197
|
</div>
|
data/doc/AnchormodelInput.html
CHANGED
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
</div>
|
|
131
131
|
|
|
132
132
|
<div id="footer">
|
|
133
|
-
Generated on Wed May 22 11:24:
|
|
133
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
134
134
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
135
135
|
0.9.34 (ruby-3.2.2).
|
|
136
136
|
</div>
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
</div>
|
|
131
131
|
|
|
132
132
|
<div id="footer">
|
|
133
|
-
Generated on Wed May 22 11:24:
|
|
133
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
134
134
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
135
135
|
0.9.34 (ruby-3.2.2).
|
|
136
136
|
</div>
|
data/doc/_index.html
CHANGED
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
</div>
|
|
221
221
|
|
|
222
222
|
<div id="footer">
|
|
223
|
-
Generated on Wed May 22 11:24:
|
|
223
|
+
Generated on Wed May 22 11:24:46 2024 by
|
|
224
224
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
225
225
|
0.9.34 (ruby-3.2.2).
|
|
226
226
|
</div>
|
data/doc/file.README.html
CHANGED
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
</div></div>
|
|
340
340
|
|
|
341
341
|
<div id="footer">
|
|
342
|
-
Generated on Wed May 22 11:24:
|
|
342
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
343
343
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
344
344
|
0.9.34 (ruby-3.2.2).
|
|
345
345
|
</div>
|
data/doc/index.html
CHANGED
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
</div></div>
|
|
340
340
|
|
|
341
341
|
<div id="footer">
|
|
342
|
-
Generated on Wed May 22 11:24:
|
|
342
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
343
343
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
344
344
|
0.9.34 (ruby-3.2.2).
|
|
345
345
|
</div>
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
</div>
|
|
101
101
|
|
|
102
102
|
<div id="footer">
|
|
103
|
-
Generated on Wed May 22 11:24:
|
|
103
|
+
Generated on Wed May 22 11:24:47 2024 by
|
|
104
104
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
105
105
|
0.9.34 (ruby-3.2.2).
|
|
106
106
|
</div>
|
|
@@ -3,12 +3,18 @@ class Anchormodel
|
|
|
3
3
|
module Helpers
|
|
4
4
|
module AnchormodelInputsCommon
|
|
5
5
|
def input(wrapper_options = nil)
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
if object.present?
|
|
7
|
+
unless object.respond_to?(:anchormodel_attributes)
|
|
8
|
+
fail("The form field object does not appear to respond to `anchormodel_attributes`, \
|
|
9
|
+
did you `include Anchormodel::ModelMixin` in your `application_record.rb`? Affected object: #{object.inspect}")
|
|
10
|
+
end
|
|
11
|
+
am_attr = object.anchormodel_attributes[@attribute_name]
|
|
12
|
+
elsif options.key?(:anchormodel_attribute)
|
|
13
|
+
am_attr = options.delete(:anchormodel_attribute)
|
|
14
|
+
else
|
|
15
|
+
fail(':anchormodel input requires either an object or the input option :anchormodel_attribute, but neither is set.')
|
|
9
16
|
end
|
|
10
17
|
|
|
11
|
-
am_attr = object.anchormodel_attributes[@attribute_name]
|
|
12
18
|
unless am_attr
|
|
13
19
|
fail("#{@attribute_name.inspect} does not look like an Anchormodel attribute, is `belongs_to_anchormodel` called in your model? \
|
|
14
20
|
Affected object: #{object.inspect}")
|
|
@@ -17,7 +23,7 @@ Affected object: #{object.inspect}")
|
|
|
17
23
|
options[:multiple] = true if am_attr.multiple? && options[:multiple] != false # allow overriding
|
|
18
24
|
|
|
19
25
|
# Attempt to read selected key from html input options "value", as the caller might not know that this is a select.
|
|
20
|
-
selected_key = input_options[:value]
|
|
26
|
+
selected_key = input_options[:value].presence || options.dig(:input_html, :value)
|
|
21
27
|
if selected_key.blank? && object
|
|
22
28
|
# No selected key override present and a model is present, use the model to find out what to select.
|
|
23
29
|
selected_am = object.send(@attribute_name)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: anchormodel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sandro Kalbermatter
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-08-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -267,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
267
267
|
- !ruby/object:Gem::Version
|
|
268
268
|
version: '0'
|
|
269
269
|
requirements: []
|
|
270
|
-
rubygems_version: 3.5.
|
|
270
|
+
rubygems_version: 3.5.11
|
|
271
271
|
signing_key:
|
|
272
272
|
specification_version: 4
|
|
273
273
|
summary: Bringing object-oriented programming to Rails enums
|