aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVipul A M <vipulnsward@gmail.com>2019-03-09 11:26:50 +0530
committerGitHub <noreply@github.com>2019-03-09 11:26:50 +0530
commit0771bd3ee891f8eaf822bb47f68f4d0266763728 (patch)
treea5eb1a5d65516f9f7c06d3a21f4a2794dd1d0ec4
parent6ef90c40f21e68a327d25fe8b90613803303a7b9 (diff)
parentf603e8b1ecce385ad16df44009538c18b850bf22 (diff)
downloadrails-0771bd3ee891f8eaf822bb47f68f4d0266763728.tar.gz
rails-0771bd3ee891f8eaf822bb47f68f4d0266763728.tar.bz2
rails-0771bd3ee891f8eaf822bb47f68f4d0266763728.zip
Merge pull request #35548 from vishaltelangre/patch-1
Minor documentation fixes related to bulk insert [ci skip]
-rw-r--r--activerecord/lib/active_record/persistence.rb23
1 files changed, 13 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb
index a09b5f0e96..ba2ac7908e 100644
--- a/activerecord/lib/active_record/persistence.rb
+++ b/activerecord/lib/active_record/persistence.rb
@@ -57,7 +57,7 @@ module ActiveRecord
end
end
- # Inserts a single record into the databases. This method constructs a single SQL INSERT
+ # Inserts a single record into the database. This method constructs a single SQL INSERT
# statement and sends it straight to the database. It does not instantiate the involved
# models and it does not trigger Active Record callbacks or validations. However, values
# passed to #insert will still go through Active Record's normal type casting and
@@ -94,8 +94,8 @@ module ActiveRecord
#
# [:unique_by]
# (Postgres and SQLite only) In a table with more than one unique constraint or index,
- # new records may considered duplicates according to different criteria. By default,
- # new rows will be skipped if they violate _any_ unique constraint/index. By defining
+ # new records may be considered duplicates according to different criteria. By default,
+ # new rows will be skipped if they violate _any_ unique constraint or index. By defining
# <tt>:unique_by</tt>, you can skip rows that would create duplicates according to the given
# constraint but raise <tt>ActiveRecord::RecordNotUnique</tt> if rows violate other constraints.
#
@@ -125,7 +125,7 @@ module ActiveRecord
InsertAll.new(self, attributes, on_duplicate: :skip, returning: returning, unique_by: unique_by).execute
end
- # Inserts a single record into the databases. This method constructs a single SQL INSERT
+ # Inserts a single record into the database. This method constructs a single SQL INSERT
# statement and sends it straight to the database. It does not instantiate the involved
# models and it does not trigger Active Record callbacks or validations. However, values
# passed to #insert! will still go through Active Record's normal type casting and
@@ -173,7 +173,7 @@ module ActiveRecord
# { title: 'Eloquent Ruby', author: 'Russ' }
# ])
#
- # # raises ActiveRecord::RecordNotUnique because 'Eloquent Ruby'
+ # # Raises ActiveRecord::RecordNotUnique because 'Eloquent Ruby'
# # does not have a unique ID
# Book.insert_all!([
# { id: 1, title: 'Rework', author: 'David' },
@@ -184,7 +184,7 @@ module ActiveRecord
InsertAll.new(self, attributes, on_duplicate: :raise, returning: returning).execute
end
- # Upserts (inserts-or-creates) a single record into the databases. This method constructs
+ # Upserts (updates or inserts) a single record into the database. This method constructs
# a single SQL INSERT statement and sends it straight to the database. It does not
# instantiate the involved models and it does not trigger Active Record callbacks or
# validations. However, values passed to #upsert will still go through Active Record's
@@ -195,7 +195,7 @@ module ActiveRecord
upsert_all([ attributes ], returning: returning, unique_by: unique_by)
end
- # Upserts (creates-or-updates) multiple records into the database. This method constructs
+ # Upserts (updates or inserts) multiple records into the database. This method constructs
# a single SQL INSERT statement and sends it straight to the database. It does not
# instantiate the involved models and it does not trigger Active Record callbacks or
# validations. However, values passed to #upsert_all will still go through Active Record's
@@ -219,11 +219,14 @@ module ActiveRecord
#
# [:unique_by]
# (Postgres and SQLite only) In a table with more than one unique constraint or index,
- # new records may considered duplicates according to different criteria. For MySQL,
+ # new records may be considered duplicates according to different criteria. For MySQL,
# an upsert will take place if a new record violates _any_ unique constraint. For
# Postgres and SQLite, new rows will replace existing rows when the new row has the
- # same primary key as the existing row. By defining <tt>:unique_by</tt>, you can supply
- # a different key for matching new records to existing ones than the primary key.
+ # same primary key as the existing row. In case of SQLite, an upsert operation causes
+ # an insert to behave as an update or a no-op if the insert would violate
+ # a uniqueness constraint. By defining <tt>:unique_by</tt>, you can supply
+ # a different unique constraint for matching new records to existing ones than the
+ # primary key.
#
# (For example, if you have a unique index on the ISBN column and use that as
# the <tt>:unique_by</tt>, a new record with the same ISBN as an existing record