anchormodel 0.1.4 → 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 +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +36 -1
- data/VERSION +1 -1
- data/anchormodel.gemspec +5 -5
- data/doc/Anchormodel/ActiveModelTypeValueSingle.html +615 -0
- data/doc/Anchormodel/Attribute.html +3 -3
- data/doc/Anchormodel/ModelMixin.html +3 -3
- data/doc/Anchormodel/Util.html +496 -0
- data/doc/Anchormodel/Version.html +3 -3
- data/doc/Anchormodel.html +5 -5
- data/doc/AnchormodelGenerator.html +201 -0
- data/doc/_index.html +51 -4
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +35 -4
- data/doc/frames.html +5 -10
- data/doc/index.html +35 -4
- data/doc/method_list.html +17 -9
- data/doc/top-level-namespace.html +4 -4
- 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.rb +3 -0
- metadata +9 -4
- data/pkg/anchormodel-0.1.3.gem +0 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
class Anchormodel
|
2
|
+
module SimpleFormInputs
|
3
|
+
module Helpers
|
4
|
+
module AnchormodelInputsCommon
|
5
|
+
def input(wrapper_options = nil)
|
6
|
+
unless object.respond_to?(:anchormodel_attributes)
|
7
|
+
fail("The form field object does not appear to respond to `anchormodel_attributes`, \
|
8
|
+
did you `include Anchormodel::ModelMixin` in your `application_record.rb`? Affected object: #{object.inspect}")
|
9
|
+
end
|
10
|
+
|
11
|
+
am_attr = object.anchormodel_attributes[@attribute_name]
|
12
|
+
unless am_attr
|
13
|
+
fail("#{@attribute_name.inspect} does not look like an Anchormodel attribute, is `belongs_to_anchormodel` called in your model? \
|
14
|
+
Affected object: #{object.inspect}")
|
15
|
+
end
|
16
|
+
am_class = am_attr.anchormodel_class
|
17
|
+
|
18
|
+
# Attempt to read selected key from html input options "value", as the caller might not know that this is a select.
|
19
|
+
selected_key = input_options[:value]
|
20
|
+
if selected_key.blank? && object
|
21
|
+
# No selected key override present and a model is present, use the model to find out what to select.
|
22
|
+
selected_am = object.send(@attribute_name)
|
23
|
+
selected_key = selected_am&.key || am_class.all.first
|
24
|
+
end
|
25
|
+
|
26
|
+
options.deep_merge!(
|
27
|
+
label_method: :first,
|
28
|
+
value_method: :second,
|
29
|
+
sf_selection_key => selected_key.to_s,
|
30
|
+
include_blank: am_attr.optional
|
31
|
+
)
|
32
|
+
|
33
|
+
@collection = collect(am_class.all)
|
34
|
+
|
35
|
+
before_render_input
|
36
|
+
|
37
|
+
super
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
# Takes an array of objects implementing the methods `label` and `key` and returns an array suitable for simple_form select fields.
|
43
|
+
def collect(flat_array)
|
44
|
+
return flat_array.map { |entry| [entry.label, entry.key] }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/anchormodel.rb
CHANGED
@@ -82,3 +82,6 @@ require 'anchormodel/active_model_type_value_single'
|
|
82
82
|
require 'anchormodel/attribute'
|
83
83
|
require 'anchormodel/model_mixin'
|
84
84
|
require 'anchormodel/version'
|
85
|
+
require 'anchormodel/simple_form_inputs/helpers/anchormodel_inputs_common'
|
86
|
+
require 'anchormodel/simple_form_inputs/anchormodel_input'
|
87
|
+
require 'anchormodel/simple_form_inputs/anchormodel_radio_buttons_input'
|
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.1.
|
4
|
+
version: 0.1.5
|
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-04-
|
11
|
+
date: 2024-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -170,9 +170,12 @@ files:
|
|
170
170
|
- bin/rails
|
171
171
|
- doc/Anchormodel.html
|
172
172
|
- doc/Anchormodel/ActiveModelTypeValue.html
|
173
|
+
- doc/Anchormodel/ActiveModelTypeValueSingle.html
|
173
174
|
- doc/Anchormodel/Attribute.html
|
174
175
|
- doc/Anchormodel/ModelMixin.html
|
176
|
+
- doc/Anchormodel/Util.html
|
175
177
|
- doc/Anchormodel/Version.html
|
178
|
+
- doc/AnchormodelGenerator.html
|
176
179
|
- doc/_index.html
|
177
180
|
- doc/class_list.html
|
178
181
|
- doc/css/common.css
|
@@ -191,13 +194,15 @@ files:
|
|
191
194
|
- lib/anchormodel/active_model_type_value_single.rb
|
192
195
|
- lib/anchormodel/attribute.rb
|
193
196
|
- lib/anchormodel/model_mixin.rb
|
197
|
+
- lib/anchormodel/simple_form_inputs/anchormodel_input.rb
|
198
|
+
- lib/anchormodel/simple_form_inputs/anchormodel_radio_buttons_input.rb
|
199
|
+
- lib/anchormodel/simple_form_inputs/helpers/anchormodel_inputs_common.rb
|
194
200
|
- lib/anchormodel/util.rb
|
195
201
|
- lib/anchormodel/version.rb
|
196
202
|
- lib/generators/anchormodel/USAGE
|
197
203
|
- lib/generators/anchormodel/anchormodel_generator.rb
|
198
204
|
- lib/generators/anchormodel/templates/anchormodel.rb.erb
|
199
205
|
- logo.svg
|
200
|
-
- pkg/anchormodel-0.1.3.gem
|
201
206
|
- test/active_record_model/user_test.rb
|
202
207
|
- test/dummy/.gitignore
|
203
208
|
- test/dummy/Rakefile
|
@@ -251,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
251
256
|
- !ruby/object:Gem::Version
|
252
257
|
version: '0'
|
253
258
|
requirements: []
|
254
|
-
rubygems_version: 3.5.
|
259
|
+
rubygems_version: 3.5.9
|
255
260
|
signing_key:
|
256
261
|
specification_version: 4
|
257
262
|
summary: Bringing object-oriented programming to Rails enums
|
data/pkg/anchormodel-0.1.3.gem
DELETED
Binary file
|