Module: ActiveData::Model::ClassMethods

Defined in:
lib/active_data/model.rb

Instance Method Summary collapse

Instance Method Details

#instantiate(data) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/active_data/model.rb', line 52

def instantiate data
  return data if data.class.include? ActiveData::Model

  data = data.symbolize_keys
  instance = allocate

  attributes = initialize_attributes
  attributes.merge!(data.slice(*attributes.keys))

  data.slice(*association_names.map(&:to_sym)).each do |association, data|
    instance.send(:"#{association}=", data)
  end

  instance.instance_variable_set(:@attributes, attributes)
  instance.instance_variable_set(:@new_record, false)

  instance
end