instance method
insert_all!
Ruby on Rails 6.0.6
Since v6.0.6 Last seen in v7.1.6Signature
insert_all!(attributes, returning: nil)
Inserts multiple records into the database in a single SQL INSERT statement. It does not instantiate any models nor does it trigger Active Record callbacks or validations. Though passed values go through Active Record’s type casting and serialization.
The attributes parameter is an Array of Hashes. Every Hash determines the attributes for a single row and must have the same keys.
Raises ActiveRecord::RecordNotUnique if any rows violate a unique index on the table. In that case, no rows are inserted.
To skip duplicate rows, see ActiveRecord::Persistence#insert_all. To replace them, see ActiveRecord::Persistence#upsert_all.
Returns an ActiveRecord::Result with its contents based on :returning (see below).
Options
- :returning
-
(PostgreSQL only) An array of attributes to return for all successfully inserted records, which by default is the primary key. Pass
returning: %w[ id name ]for both id and name orreturning: falseto omit the underlyingRETURNINGSQL clause entirely.
Examples
# Insert multiple records Book.insert_all!([ { title: "Rework", author: "David" }, { title: "Eloquent Ruby", author: "Russ" } ]) # Raises ActiveRecord::RecordNotUnique because "Eloquent Ruby" # does not have a unique id. Book.insert_all!([ { id: 1, title: "Rework", author: "David" }, { id: 1, title: "Eloquent Ruby", author: "Russ" } ])
Parameters
-
attributesreq -
returningkey = nil
Source
# File activerecord/lib/active_record/persistence.rb, line 177
def insert_all!(attributes, returning: nil)
InsertAll.new(self, attributes, on_duplicate: :raise, returning: returning).execute
end
Defined in activerecord/lib/active_record/persistence.rb line 177
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Persistence::ClassMethods