module ActForm::Attributes::ClassMethods

Constants

NO_DEFAULT_PROVIDED

Public Instance Methods

attr(name, cast_type = :object, **options)
Alias for: attribute
attribute(name, cast_type = :object, **options) click to toggle source

attribute :name, type: :string

or

attribute :name, :string, required: true

# File lib/act_form/attributes.rb, line 27
def attribute(name, cast_type = :object, **options)
  name = name.to_s
  cast_type = options[:type] || cast_type
  self.attribute_set = attribute_set.merge(name => [cast_type, options])

  define_reader_method name, **options.slice(:default)
  define_writer_method name, cast_type

  name
end
Also aliased as: attr
define_reader_method(name, default: NO_DEFAULT_PROVIDED) click to toggle source
# File lib/act_form/attributes.rb, line 39
def define_reader_method(name, default: NO_DEFAULT_PROVIDED)
  define_method(name) { attributes[name] || get_default(default, NO_DEFAULT_PROVIDED) }
end
define_writer_method(name, cast_type) click to toggle source
# File lib/act_form/attributes.rb, line 43
def define_writer_method(name, cast_type)
  define_method("#{name}=") do |value|
    _value = ActiveModel::Type.lookup(cast_type).deserialize(value)
    @attributes = attributes.merge({name => _value})
    _value
  end
end