class Redress::Form
Constants
- DEFAULT_NAME
- SPLITTER
Attributes
context[R]
Public Class Methods
define_schema(options = nil) { || ... }
click to toggle source
# File lib/redress/form.rb, line 44 def self.define_schema(options = nil) options.each { |key, value| public_send(key, value) } if options yield attribute_names.each do |name| method_name = :"#{name}=" next if instance_methods.include?(method_name) define_method(method_name) do |value| write_attribute(name, value) end end end
from_model(model)
click to toggle source
# File lib/redress/form.rb, line 40 def self.from_model(model) Redress::Utils::BuildFormFromModel.new(self, model).build end
from_params(params, options = nil)
click to toggle source
# File lib/redress/form.rb, line 36 def self.from_params(params, options = nil) new(Redress::Utils::ParseAttributesFromParams.new(self, params, options).to_h) end
infer_model_name()
click to toggle source
# File lib/redress/form.rb, line 29 def self.infer_model_name class_name = name.split(SPLITTER).last return :form if class_name == DEFAULT_NAME Redress::Utils::ModelNameString.new(class_name.chomp(DEFAULT_NAME)).to_sym end
mimic(model_name)
click to toggle source
# File lib/redress/form.rb, line 21 def self.mimic(model_name) @model_name = Redress::Utils::ModelNameString.new(model_name).to_sym end
mimicked_model_name()
click to toggle source
# File lib/redress/form.rb, line 25 def self.mimicked_model_name @model_name || infer_model_name end
Public Instance Methods
map_model(model)
click to toggle source
# File lib/redress/form.rb, line 72 def map_model(model) end
persisted?()
click to toggle source
# File lib/redress/form.rb, line 59 def persisted? respond_to?(:id) && id.present? end
properties()
click to toggle source
# File lib/redress/form.rb, line 68 def properties @properties ||= Redress::Utils::AttributesHash.new(to_hash) end
with_context(options)
click to toggle source
# File lib/redress/form.rb, line 63 def with_context(options) @context = Hashie::Mash.new(options) self end
Protected Instance Methods
write_attribute(name, value)
click to toggle source
# File lib/redress/form.rb, line 77 def write_attribute(name, value) return unless self.class.has_attribute?(name) @attributes[name] = safe_coercion(name, value) end
Private Instance Methods
safe_coercion(name, value)
click to toggle source
# File lib/redress/form.rb, line 85 def safe_coercion(name, value) type = self.class.schema.key(name) type[value] rescue Dry::Types::CoercionError nil end