Module: ActForm::Attributes::ClassMethods
- Defined in:
- lib/act_form/attributes.rb
Instance Method Summary collapse
-
#attribute(name, cast_type = :object, **options) ⇒ Object
attribute :name, type: :string or attribute :name, :string, required: true.
- #define_reader_method(name, default: NO_DEFAULT_PROVIDED) ⇒ Object
- #define_writer_method(name, cast_type) ⇒ Object
Instance Method Details
#attribute(name, cast_type = :object, **options) ⇒ Object
attribute :name, type: :string
or
attribute :name, :string, required: true
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/act_form/attributes.rb', line 27 def attribute(name, cast_type = :object, **) name = name.to_s cast_type = [:type] || cast_type self.attribute_set = attribute_set.merge(name => [cast_type, ]) define_reader_method name, **.slice(:default) define_writer_method name, cast_type name end |
#define_reader_method(name, default: NO_DEFAULT_PROVIDED) ⇒ Object
38 39 40 |
# File 'lib/act_form/attributes.rb', line 38 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) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/act_form/attributes.rb', line 42 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 |