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.
@@ -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
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-23 00:00:00.000000000 Z
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.6
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
Binary file