Method: ActiveRecord::Inheritance::ClassMethods#instantiate

Defined in:
lib/active_record/inheritance.rb

#instantiate(record) ⇒ Object

Finder methods must instantiate through this method to work with the single-table inheritance model that makes it possible to create objects of different types from the same table.



61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/active_record/inheritance.rb', line 61

def instantiate(record)
  sti_class = find_sti_class(record[inheritance_column])
  record_id = sti_class.primary_key && record[sti_class.primary_key]

  if ActiveRecord::IdentityMap.enabled? && record_id
    instance = use_identity_map(sti_class, record_id, record)
  else
    instance = sti_class.allocate.init_with('attributes' => record)
  end

  instance
end