class Formwandler::Field
Attributes
field_definition[R]
form[R]
Public Class Methods
new(form:, field_definition:)
click to toggle source
# File lib/formwandler/field.rb, line 9 def initialize(form:, field_definition:) @form = form @field_definition = field_definition end
Public Instance Methods
array?()
click to toggle source
# File lib/formwandler/field.rb, line 63 def array? field_definition.array end
default()
click to toggle source
# File lib/formwandler/field.rb, line 55 def default _evaluate_field_definition_value(:default) end
default?()
click to toggle source
# File lib/formwandler/field.rb, line 51 def default? !field_definition.default.nil? end
delocalize()
click to toggle source
# File lib/formwandler/field.rb, line 59 def delocalize _evaluate_field_definition_value(:delocalize) end
disabled?()
click to toggle source
# File lib/formwandler/field.rb, line 39 def disabled? _evaluate_field_definition_value(:disabled) end
options()
click to toggle source
# File lib/formwandler/field.rb, line 47 def options all_options - hidden_options end
raw_value()
click to toggle source
# File lib/formwandler/field.rb, line 27 def raw_value model_instance ? model_instance.public_send(source) : @value end
readonly?()
click to toggle source
# File lib/formwandler/field.rb, line 43 def readonly? _evaluate_field_definition_value(:readonly) end
value()
click to toggle source
# File lib/formwandler/field.rb, line 23 def value transform_value(raw_value, field_definition.out_transformation) end
value=(new_value)
click to toggle source
# File lib/formwandler/field.rb, line 14 def value=(new_value) new_value = transform_value(new_value, field_definition.in_transformation) if model_instance model_instance.public_send("#{source}=", new_value) else @value = new_value end end
visible?()
click to toggle source
# File lib/formwandler/field.rb, line 35 def visible? !hidden? end
Private Instance Methods
_evaluate_field_definition_value(attr_name)
click to toggle source
# File lib/formwandler/field.rb, line 102 def _evaluate_field_definition_value(attr_name) value = field_definition.send(attr_name) _evaluate_value(value) end
_evaluate_value(value)
click to toggle source
# File lib/formwandler/field.rb, line 107 def _evaluate_value(value) if value.respond_to?(:call) form.instance_exec(&value) else value end end
all_options()
click to toggle source
# File lib/formwandler/field.rb, line 78 def all_options _evaluate_field_definition_value(:options) || options_from_model || [] end
enum_field?()
click to toggle source
# File lib/formwandler/field.rb, line 94 def enum_field? model_instance.class.attribute_types[name.to_s].is_a?(ActiveRecord::Enum::EnumType) end
model_instance()
click to toggle source
# File lib/formwandler/field.rb, line 98 def model_instance form.models[field_definition.model] if field_definition.model.present? end
options_from_model()
click to toggle source
# File lib/formwandler/field.rb, line 88 def options_from_model return unless model_instance.present? && model_instance.is_a?(ActiveRecord::Base) return unless enum_field? model_instance.class.public_send(name.to_s.pluralize).keys end
transform_value(value, transformation)
click to toggle source
# File lib/formwandler/field.rb, line 69 def transform_value(value, transformation) return value if !field_definition.transform_blank && (value.nil? || value == '') if transformation.respond_to?(:call) form.instance_exec(value, &transformation) else value end end