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