Module: ActForm::Attributes::ClassMethods
- Defined in:
- lib/act_form/attributes.rb
Overview
rubocop:disable Style/Documentation
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
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/act_form/attributes.rb', line 30 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
42 43 44 45 46 47 48 49 50 |
# File 'lib/act_form/attributes.rb', line 42 def define_reader_method(name, default: NO_DEFAULT_PROVIDED) define_method(name) do if attributes.key?(name) attributes[name] else get_default(default, NO_DEFAULT_PROVIDED) end end end |
#define_writer_method(name, cast_type) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/act_form/attributes.rb', line 52 def define_writer_method(name, cast_type) define_method("#{name}=") do |value| val = ActiveModel::Type.lookup(cast_type).deserialize(value) @attributes = attributes.merge({ name => val }) val end end |