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 |