module ActForm::Attributes::ClassMethods
Constants
- NO_DEFAULT_PROVIDED
Public Instance Methods
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