Module: ActForm::Attributes::ClassMethods
- Defined in:
- lib/act_form/attributes.rb
Instance Method Summary collapse
-
#attribute(name, cast_type = :object, **options) ⇒ Object
(also: #attr)
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 Also known as: attr
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
39 40 41 |
# 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) ⇒ Object
43 44 45 46 47 48 49 |
# 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 |