anchormodel 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +26 -24
- data/README.md +36 -1
- data/VERSION +1 -0
- data/anchormodel.gemspec +15 -15
- data/doc/Anchormodel/ActiveModelTypeValueSingle.html +615 -0
- data/doc/Anchormodel/Attribute.html +2 -2
- data/doc/Anchormodel/ModelMixin.html +18 -283
- data/doc/Anchormodel/Util.html +496 -0
- data/doc/Anchormodel/Version.html +3 -59
- data/doc/Anchormodel.html +5 -5
- data/doc/AnchormodelGenerator.html +201 -0
- data/doc/_index.html +70 -3
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +45 -6
- data/doc/index.html +45 -6
- data/doc/method_list.html +50 -18
- data/doc/top-level-namespace.html +3 -3
- data/lib/anchormodel/{active_model_type_value.rb → active_model_type_value_single.rb} +22 -9
- data/lib/anchormodel/model_mixin.rb +4 -82
- data/lib/anchormodel/simple_form_inputs/anchormodel_input.rb +21 -0
- data/lib/anchormodel/simple_form_inputs/anchormodel_radio_buttons_input.rb +23 -0
- data/lib/anchormodel/simple_form_inputs/helpers/anchormodel_inputs_common.rb +49 -0
- data/lib/anchormodel/util.rb +93 -0
- data/lib/anchormodel/version.rb +1 -7
- data/lib/anchormodel.rb +5 -1
- data/test/active_record_model/user_test.rb +19 -0
- metadata +17 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0321a1c26ba215c332b2b496cefda3a5a1459f82599dc2655e16368e53af351e
|
4
|
+
data.tar.gz: 4361b8edc741f1509f460fc579d1f3e3ded9e59f0ae1d8ff623da6bee6502f4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a18303288bcf7aac1a46d6de54f4adc631a8ff535c37a401a39beda41f762cf2cf94d11a266367e80026fefddb3fb0174b826be9f0f5e6fb4e036286e99d4f89
|
7
|
+
data.tar.gz: 22a389c15f1cc54f9e7fb9b20b9b54683db85cbcbbd16cfc9fb42c900221665d1969c79cbfe8a3f290efaf8a472f1e2d3fed9f050b2c27b2d818abc12c3f0a03
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
anchormodel (0.1.
|
4
|
+
anchormodel (0.1.5.edge)
|
5
5
|
rails (~> 7.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -78,41 +78,41 @@ GEM
|
|
78
78
|
coderay (1.1.3)
|
79
79
|
concurrent-ruby (1.1.10)
|
80
80
|
crass (1.0.6)
|
81
|
-
date (3.3.
|
81
|
+
date (3.3.4)
|
82
82
|
erubi (1.12.0)
|
83
|
-
globalid (1.
|
84
|
-
activesupport (>=
|
83
|
+
globalid (1.2.1)
|
84
|
+
activesupport (>= 6.1)
|
85
85
|
i18n (1.12.0)
|
86
86
|
concurrent-ruby (~> 1.0)
|
87
87
|
json (2.6.3)
|
88
|
-
loofah (2.
|
88
|
+
loofah (2.22.0)
|
89
89
|
crass (~> 1.0.2)
|
90
|
-
nokogiri (>= 1.
|
91
|
-
mail (2.8.
|
90
|
+
nokogiri (>= 1.12.0)
|
91
|
+
mail (2.8.1)
|
92
92
|
mini_mime (>= 0.1.1)
|
93
93
|
net-imap
|
94
94
|
net-pop
|
95
95
|
net-smtp
|
96
|
-
marcel (1.0.
|
96
|
+
marcel (1.0.4)
|
97
97
|
method_source (1.0.0)
|
98
|
-
mini_mime (1.1.
|
98
|
+
mini_mime (1.1.5)
|
99
99
|
minitest (5.17.0)
|
100
100
|
minitest-reporters (1.5.0)
|
101
101
|
ansi
|
102
102
|
builder
|
103
103
|
minitest (>= 5.0)
|
104
104
|
ruby-progressbar
|
105
|
-
net-imap (0.
|
105
|
+
net-imap (0.4.10)
|
106
106
|
date
|
107
107
|
net-protocol
|
108
108
|
net-pop (0.1.2)
|
109
109
|
net-protocol
|
110
|
-
net-protocol (0.2.
|
110
|
+
net-protocol (0.2.2)
|
111
111
|
timeout
|
112
|
-
net-smtp (0.
|
112
|
+
net-smtp (0.5.0)
|
113
113
|
net-protocol
|
114
|
-
nio4r (2.
|
115
|
-
nokogiri (1.
|
114
|
+
nio4r (2.7.1)
|
115
|
+
nokogiri (1.16.4-x86_64-linux)
|
116
116
|
racc (~> 1.4)
|
117
117
|
parallel (1.22.1)
|
118
118
|
parser (3.2.0.0)
|
@@ -120,9 +120,9 @@ GEM
|
|
120
120
|
pry (0.14.1)
|
121
121
|
coderay (~> 1.1)
|
122
122
|
method_source (~> 1.0)
|
123
|
-
racc (1.
|
123
|
+
racc (1.7.3)
|
124
124
|
rack (2.2.5)
|
125
|
-
rack-test (2.0
|
125
|
+
rack-test (2.1.0)
|
126
126
|
rack (>= 1.3)
|
127
127
|
rails (7.0.4)
|
128
128
|
actioncable (= 7.0.4)
|
@@ -138,11 +138,13 @@ GEM
|
|
138
138
|
activesupport (= 7.0.4)
|
139
139
|
bundler (>= 1.15.0)
|
140
140
|
railties (= 7.0.4)
|
141
|
-
rails-dom-testing (2.0
|
142
|
-
activesupport (>=
|
141
|
+
rails-dom-testing (2.2.0)
|
142
|
+
activesupport (>= 5.0.0)
|
143
|
+
minitest
|
143
144
|
nokogiri (>= 1.6)
|
144
|
-
rails-html-sanitizer (1.
|
145
|
-
loofah (~> 2.
|
145
|
+
rails-html-sanitizer (1.6.0)
|
146
|
+
loofah (~> 2.21)
|
147
|
+
nokogiri (~> 1.14)
|
146
148
|
railties (7.0.4)
|
147
149
|
actionpack (= 7.0.4)
|
148
150
|
activesupport (= 7.0.4)
|
@@ -172,20 +174,20 @@ GEM
|
|
172
174
|
rubocop (>= 1.33.0, < 2.0)
|
173
175
|
ruby-progressbar (1.11.0)
|
174
176
|
sqlite3 (1.6.0-x86_64-linux)
|
175
|
-
thor (1.
|
176
|
-
timeout (0.
|
177
|
+
thor (1.3.1)
|
178
|
+
timeout (0.4.1)
|
177
179
|
tzinfo (2.0.5)
|
178
180
|
concurrent-ruby (~> 1.0)
|
179
181
|
unicode-display_width (2.4.2)
|
180
182
|
webrick (1.7.0)
|
181
|
-
websocket-driver (0.7.
|
183
|
+
websocket-driver (0.7.6)
|
182
184
|
websocket-extensions (>= 0.1.0)
|
183
185
|
websocket-extensions (0.1.5)
|
184
186
|
yard (0.9.28)
|
185
187
|
webrick (~> 1.7.0)
|
186
188
|
yard-activesupport-concern (0.0.1)
|
187
189
|
yard (>= 0.8)
|
188
|
-
zeitwerk (2.6.
|
190
|
+
zeitwerk (2.6.13)
|
189
191
|
|
190
192
|
PLATFORMS
|
191
193
|
x86_64-linux
|
data/README.md
CHANGED
@@ -35,7 +35,7 @@ are regular classes and can easily be extended.
|
|
35
35
|
|
36
36
|
### ActiveEnum
|
37
37
|
|
38
|
-
The gem (
|
38
|
+
The gem [ActiveEnum](https://github.com/adzap/active_enum) allows to create
|
39
39
|
Enum-like classes that can be extended. However it only supports Integer keys. I
|
40
40
|
find this unsatisfactory, as debugging with tools like `psql` or `mysql` is made
|
41
41
|
unnecessarily hard when you only see numbers. Keys for enums should be
|
@@ -116,6 +116,41 @@ puts("User #{@user.name} has role #{@user.role.label}")
|
|
116
116
|
@user.role.admin? # true if and only if the role is admin (false otherwise)
|
117
117
|
```
|
118
118
|
|
119
|
+
Your form could look something like this:
|
120
|
+
|
121
|
+
```erb
|
122
|
+
<%= form_with(model: user) do |form| %>
|
123
|
+
<%# ... %>
|
124
|
+
<%= form.collection_select :role, Role.all, :key, :label %>
|
125
|
+
<%# ... %>
|
126
|
+
<% end %>
|
127
|
+
```
|
128
|
+
|
129
|
+
## Using Anchormodel with Simpleform
|
130
|
+
|
131
|
+
Anchormodel has built-in support for the [simple_form](https://github.com/heartcombo/simple_form) gem by providing an input for the type `:anchormodel` which displays anchormodel attributes as a collection select.
|
132
|
+
|
133
|
+
After SimpleForm is installed, you can write your form as:
|
134
|
+
|
135
|
+
```erb
|
136
|
+
<%= simple_form_for user do |f| %>
|
137
|
+
<%# ... %>
|
138
|
+
<%= f.input :role %>
|
139
|
+
<%# ... %>
|
140
|
+
<% end %>
|
141
|
+
```
|
142
|
+
|
143
|
+
Or, if you prefer radio buttons instead:
|
144
|
+
|
145
|
+
|
146
|
+
```erb
|
147
|
+
<%= simple_form_for user do |f| %>
|
148
|
+
<%# ... %>
|
149
|
+
<%= f.input :role, as: :anchormodel_radio_buttons %>
|
150
|
+
<%# ... %>
|
151
|
+
<% end %>
|
152
|
+
```
|
153
|
+
|
119
154
|
# Rails Enum style model methods
|
120
155
|
|
121
156
|
By default, Anchormodel adds three kinds of methods for each key to the model:
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.5
|
data/anchormodel.gemspec
CHANGED
@@ -2,33 +2,33 @@
|
|
2
2
|
# This file is auto-generated via: 'rake gemspec'.
|
3
3
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: anchormodel 0.1.
|
5
|
+
# stub: anchormodel 0.1.5 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "anchormodel".freeze
|
9
|
-
s.version = "0.1.
|
9
|
+
s.version = "0.1.5".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 = "
|
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/
|
14
|
+
s.date = "2024-04-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, "VERSION".freeze, "anchormodel.gemspec".freeze, "bin/rails".freeze, "doc/Anchormodel.html".freeze, "doc/Anchormodel/ActiveModelTypeValue.html".freeze, "doc/Anchormodel/ActiveModelTypeValueSingle.html".freeze, "doc/Anchormodel/Attribute.html".freeze, "doc/Anchormodel/ModelMixin.html".freeze, "doc/Anchormodel/Util.html".freeze, "doc/Anchormodel/Version.html".freeze, "doc/AnchormodelGenerator.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_single.rb".freeze, "lib/anchormodel/attribute.rb".freeze, "lib/anchormodel/model_mixin.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/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)
|
19
|
-
s.rubygems_version = "3.
|
19
|
+
s.rubygems_version = "3.5.9".freeze
|
20
20
|
s.summary = "Bringing object-oriented programming to Rails enums".freeze
|
21
21
|
|
22
22
|
s.specification_version = 4
|
23
23
|
|
24
|
-
s.add_runtime_dependency(%q<rails>.freeze, ["~> 7.0"])
|
25
|
-
s.add_development_dependency(%q<rake>.freeze, ["~> 13.0.6"])
|
26
|
-
s.add_development_dependency(%q<pry>.freeze, ["~> 0.14.1"])
|
27
|
-
s.add_development_dependency(%q<rubocop>.freeze, ["~> 1.43.0"])
|
28
|
-
s.add_development_dependency(%q<rubocop-rails>.freeze, ["~> 2.17.4"])
|
29
|
-
s.add_development_dependency(%q<yard>.freeze, ["~> 0.9.28"])
|
30
|
-
s.add_development_dependency(%q<yard-activesupport-concern>.freeze, ["~> 0.0.1"])
|
31
|
-
s.add_development_dependency(%q<minitest>.freeze, ["~> 5.17.0"])
|
32
|
-
s.add_development_dependency(%q<minitest-reporters>.freeze, ["~> 1.5.0"])
|
33
|
-
s.add_development_dependency(%q<sqlite3>.freeze, ["~> 1.6.0"])
|
24
|
+
s.add_runtime_dependency(%q<rails>.freeze, ["~> 7.0".freeze])
|
25
|
+
s.add_development_dependency(%q<rake>.freeze, ["~> 13.0.6".freeze])
|
26
|
+
s.add_development_dependency(%q<pry>.freeze, ["~> 0.14.1".freeze])
|
27
|
+
s.add_development_dependency(%q<rubocop>.freeze, ["~> 1.43.0".freeze])
|
28
|
+
s.add_development_dependency(%q<rubocop-rails>.freeze, ["~> 2.17.4".freeze])
|
29
|
+
s.add_development_dependency(%q<yard>.freeze, ["~> 0.9.28".freeze])
|
30
|
+
s.add_development_dependency(%q<yard-activesupport-concern>.freeze, ["~> 0.0.1".freeze])
|
31
|
+
s.add_development_dependency(%q<minitest>.freeze, ["~> 5.17.0".freeze])
|
32
|
+
s.add_development_dependency(%q<minitest-reporters>.freeze, ["~> 1.5.0".freeze])
|
33
|
+
s.add_development_dependency(%q<sqlite3>.freeze, ["~> 1.6.0".freeze])
|
34
34
|
end
|