# File lib/sequel/plugins/insert_ignore.rb, line 62 def primary_key_columns_are_same_as_identifying_columns insert_ignore_primary_key_columns == self.class.insert_ignore_plugin_identifying_columns.sort end
module Sequel::Plugins::InsertIgnore::InstanceMethods
Public Instance Methods
insert_ignore(opts = {})
click to toggle source
# File lib/sequel/plugins/insert_ignore.rb, line 23 def insert_ignore(opts = {}) save(opts) load_values_from_previously_inserted_object unless id self rescue Sequel::NoExistingObject load_values_from_previously_inserted_object self end
Private Instance Methods
_insert_dataset()
click to toggle source
naughty override of Sequel
private method
Calls superclass method
# File lib/sequel/plugins/insert_ignore.rb, line 67 def _insert_dataset super.insert_ignore end
find_previously_inserted_object()
click to toggle source
# File lib/sequel/plugins/insert_ignore.rb, line 51 def find_previously_inserted_object query = self.class.insert_ignore_plugin_identifying_columns.each_with_object({}) do | column_name, q | q[column_name] = values[column_name] end model.where(query).single_record end
insert_ignore_primary_key_columns()
click to toggle source
# File lib/sequel/plugins/insert_ignore.rb, line 58 def insert_ignore_primary_key_columns @insert_ignore_primary_key_columns ||= [*primary_key].sort end
load_values_from_previously_inserted_object()
click to toggle source
# File lib/sequel/plugins/insert_ignore.rb, line 34 def load_values_from_previously_inserted_object set_primary_key_columns_from_previously_inserted_object refresh end
primary_key_columns_are_same_as_identifying_columns()
click to toggle source
set_primary_key_columns_from_previously_inserted_object()
click to toggle source
# File lib/sequel/plugins/insert_ignore.rb, line 39 def set_primary_key_columns_from_previously_inserted_object if !primary_key_columns_are_same_as_identifying_columns existing_record = find_previously_inserted_object insert_ignore_primary_key_columns.each do | column | self.send("#{column}=".to_sym, existing_record[column]) end # Need to clear out the _update_dataset when the NoExistingObject is thrown because # the ID gets incremented somewhere in the Sequel code @this = nil end end