Module: ReeDto::DtoClassMethods
- Includes:
- Ree::Contracts::ArgContracts, Ree::Contracts::Core
- Defined in:
- lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_class_methods.rb
Instance Method Summary collapse
- #build(attrs = nil, **kwargs) ⇒ Object
-
#build_from_attrs(attrs) ⇒ Object
Fast-path constructor used by compiled db_load: takes ownership of attrs (it becomes @_attrs without copying), so callers must not reuse the hash.
- #collections ⇒ Object
- #fields ⇒ Object
- #fields_with_default ⇒ Object
Instance Method Details
#build(attrs = nil, **kwargs) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_class_methods.rb', line 23 def build(attrs = nil, **kwargs) dto_obj = new(attrs || kwargs) set_attrs = attrs ? attrs.keys : kwargs.keys fields_to_set = fields_with_default.reject{ set_attrs.include?(_1.name) } fields_to_set.each do |field| dto_obj.set_attr(field.name, field.default) end dto_obj end |
#build_from_attrs(attrs) ⇒ Object
Fast-path constructor used by compiled db_load: takes ownership of attrs (it becomes @_attrs without copying), so callers must not reuse the hash. Reads @fields_with_default directly: the contract-wrapped reader would revalidate the array on every row.
39 40 41 42 43 44 45 46 47 |
# File 'lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_class_methods.rb', line 39 def build_from_attrs(attrs) (@fields_with_default || []).each do |field| attrs[field.name] = field.default unless attrs.key?(field.name) end dto_obj = allocate dto_obj.instance_variable_set(:@_attrs, attrs) dto_obj end |
#collections ⇒ Object
19 20 21 |
# File 'lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_class_methods.rb', line 19 def collections @collections ||= [] end |
#fields ⇒ Object
9 10 11 |
# File 'lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_class_methods.rb', line 9 def fields @fields ||= [] end |
#fields_with_default ⇒ Object
14 15 16 |
# File 'lib/ree_lib/packages/ree_dto/package/ree_dto/dto/dto_class_methods.rb', line 14 def fields_with_default @fields_with_default ||= [] end |