class Formwandler::FieldDefinition

Attributes

array[RW]
default[RW]
delocalize[RW]
disabled[RW]
hidden[RW]
model[RW]
model_class[RW]
name[R]
options[RW]
readonly[RW]
source[RW]
transform_blank[R]
value_transformer[R]

Public Class Methods

new(name) click to toggle source
# File lib/formwandler/field_definition.rb, line 10
def initialize(name)
  @name = name
  @transform_blank = false
  set_defaults
end

Public Instance Methods

configure(opts) click to toggle source
# File lib/formwandler/field_definition.rb, line 33
def configure(opts)
  model = opts[:model]
  model_class = opts[:model_class] || model
  set_model model, model_class
  opts.except(:model, :model_class).each do |key, value|
    send("#{key}=", value)
  rescue NoMethodError
    raise ArgumentError, "Invalid option #{key}"
  end
end
hidden_options() click to toggle source
# File lib/formwandler/field_definition.rb, line 48
def hidden_options
  @hidden_options ||= {}
end
hide_option(name, value = true) click to toggle source
# File lib/formwandler/field_definition.rb, line 44
def hide_option(name, value = true)
  hidden_options[name.to_s] = value
end
in_transformation() click to toggle source
# File lib/formwandler/field_definition.rb, line 57
def in_transformation
  value_transformer&.in_transformation
end
model=(model) click to toggle source
# File lib/formwandler/field_definition.rb, line 16
def model=(model)
  set_model model, model
end
model_class=(symbol_or_class) click to toggle source
# File lib/formwandler/field_definition.rb, line 20
def model_class=(symbol_or_class)
  @model_class =
    if symbol_or_class.nil?
      nil
    elsif symbol_or_class.is_a?(Symbol)
      symbol_or_class.to_s.classify.constantize rescue nil
    elsif symbol_or_class < ActiveRecord::Base || symbol_or_class < ActiveModel::Model
      symbol_or_class
    else
      fail 'The model class must be nil, a symbol or a descendant of ActiveModel::Model or ActiveRecord::Base.'
    end
end
out_transformation() click to toggle source
# File lib/formwandler/field_definition.rb, line 61
def out_transformation
  value_transformer&.out_transformation
end
transform(allow_blank: false, &block) click to toggle source
# File lib/formwandler/field_definition.rb, line 52
def transform(allow_blank: false, &block)
  @transform_blank = allow_blank
  @value_transformer = FieldValueTransformer.new(&block)
end

Private Instance Methods

set_defaults() click to toggle source
# File lib/formwandler/field_definition.rb, line 69
def set_defaults
  @hidden = false
  @disabled = false
  @readonly = false
  @default = nil
  @delocalize = nil
  @model = nil
  @model_class = nil
  @source = name
  @options = nil
  @array = false
end
set_model(model, model_class) click to toggle source
# File lib/formwandler/field_definition.rb, line 82
def set_model(model, model_class)
  @model = model
  self.model_class = model_class
end