Module: Sequel::Plugins::InsertConflict
- Defined in:
- lib/sequel/plugins/insert_conflict.rb
Overview
The insert_conflict plugin allows handling conflicts due to unique constraints when saving new model instance, using the INSERT ON CONFLICT support in PostgreSQL 9.5+ and SQLite 3.24.0+. Example:
class Album < Sequel::Model
plugin :insert_conflict
end
Album.new(name: 'Foo', copies_sold: 1000).
insert_conflict(
target: :name,
update: {copies_sold: Sequel[:excluded][:b]}
).
save
This example will try to insert the album, but if there is an existing album with the name 'Foo', this will update the copies_sold attribute for that album. See the PostgreSQL and SQLite adapter documention for the options you can pass to the insert_conflict method.
Usage:
# Make all model subclasses support insert_conflict
Sequel::Model.plugin :insert_conflict
# Make the Album class support insert_conflict
Album.plugin :insert_conflict
Defined Under Namespace
Modules: InstanceMethods