Module: ActiveItem::ComposedOf
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
Instance Method Details
#populate_composed_attributes_from_item(item) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/active_item/composed_of.rb', line 9 def populate_composed_attributes_from_item(item) self.class.compositions.each do |part_id, config| dynamo_key = self.class.to_dynamo_key(part_id.to_s) vo_class = Object.const_get(config[:class_name]) if item[dynamo_key].is_a?(Hash) vo = if vo_class.respond_to?(:from_dynamo_map) vo_class.from_dynamo_map(item[dynamo_key]) else kwargs = {} config[:mapping].each do |_model_attr, vo_attr| key = self.class.to_dynamo_key(vo_attr.to_s) kwargs[vo_attr] = item[dynamo_key][key] || item[dynamo_key][vo_attr.to_s] end vo_class.new(**kwargs) end instance_variable_set("@_composed_#{part_id}", vo) config[:mapping].each do |model_attr, vo_attr| instance_variable_set("@#{model_attr}", vo.send(vo_attr)) end end end end |