instance method
instantiate
Ruby on Rails 5.2.8.1
Since v4.0.13Signature
instantiate(attributes, column_types = {}, &block)
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.
Parameters
-
attributesreq -
column_typesopt = {} -
blockblock
Source
# File activerecord/lib/active_record/persistence.rb, line 68
def instantiate(attributes, column_types = {}, &block)
klass = discriminate_class_for_record(attributes)
attributes = klass.attributes_builder.build_from_database(attributes, column_types)
klass.allocate.init_with("attributes" => attributes, "new_record" => false, &block)
end
Defined in activerecord/lib/active_record/persistence.rb line 68
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Persistence::ClassMethods