# 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
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
Source
# File lib/sequel/plugins/insert_ignore.rb, line 67 def _insert_dataset super.insert_ignore end
naughty override of Sequel
private method
Calls superclass method
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
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
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
Source
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