Method: ActiveRecord::Persistence::ClassMethods#instantiate
- Defined in:
- activerecord/lib/active_record/persistence.rb
#instantiate(attributes, column_types = {}, &block) ⇒ Object
Given an attributes hash, instantiate returns a new instance of the appropriate class. Accepts only keys as strings.
For example, Post.all may return Comments, Messages, and Emails by storing the record’s subclass in a type attribute. By calling instantiate instead of new, finder methods ensure they get new instances of the appropriate class for each record.
See ActiveRecord::Inheritance#discriminate_class_for_record to see how this “single-table” inheritance mapping is implemented.
100 101 102 103 |
# File 'activerecord/lib/active_record/persistence.rb', line 100 def instantiate(attributes, column_types = {}, &block) klass = discriminate_class_for_record(attributes) instantiate_instance_of(klass, attributes, column_types, &block) end |