anchormodel 0.1.3 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|