Module
ActiveRecord::Persistence::ClassMethods

Creates an object (or multiple objects) and saves it to the database, if
validations pass. The resulting object is returned whether the object was
saved successfully to the database or not.

The attributes parameter can be either a Hash or an Array
of Hashes. These Hashes describe the attributes on the objects that are to
be created.

Examples

# Create a single new object
User.create(first_name: 'Jamie')
# Create an Array of new objects
User.create([{ first_name: 'Jamie' }, { first_name: 'Jeremy' }])
# Create a single object and pass it into a block to set other attributes.
User.create(first_name: 'Jamie') do |u|
u.is_admin = false
end
# Creating an Array of new objects using a block, where the block is executed for each object:
User.create([{ first_name: 'Jamie' }, { first_name: 'Jeremy' }]) do |u|
u.is_admin = false
end

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.