Module: ActiveData::Model::Attributable::ClassMethods
- Defined in:
- lib/active_data/model/attributable.rb
Instance Method Summary collapse
- #attribute(name, options = {}, &block) ⇒ Object
- #build_attribute(name, options = {}, &block) ⇒ Object
- #generated_class_attributes_methods ⇒ Object
- #generated_instance_attributes_methods ⇒ Object
- #initialize_attributes ⇒ Object
Instance Method Details
#attribute(name, options = {}, &block) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/active_data/model/attributable.rb', line 14 def attribute name, = {}, &block attribute = build_attribute(name, , &block) self._attributes = _attributes.merge(attribute.name => attribute) attribute.generate_instance_methods generated_instance_attributes_methods attribute.generate_class_methods generated_class_attributes_methods attribute end |
#build_attribute(name, options = {}, &block) ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/active_data/model/attributable.rb', line 23 def build_attribute name, = {}, &block klass = case [:type].to_s when 'Localized' ActiveData::Attributes::Localized else ActiveData::Attributes::Base end klass.new name, , &block end |
#generated_class_attributes_methods ⇒ Object
33 34 35 |
# File 'lib/active_data/model/attributable.rb', line 33 def generated_class_attributes_methods @generated_class_attributes_methods ||= Module.new.tap { |proxy| extend proxy } end |
#generated_instance_attributes_methods ⇒ Object
37 38 39 |
# File 'lib/active_data/model/attributable.rb', line 37 def generated_instance_attributes_methods @generated_instance_attributes_methods ||= Module.new.tap { |proxy| include proxy } end |
#initialize_attributes ⇒ Object
41 42 43 |
# File 'lib/active_data/model/attributable.rb', line 41 def initialize_attributes Hash[_attributes.map { |(name, _)| [name, nil] }] end |