Method: BridgeCache::Plugins::CSVDump.condition_sql

Defined in:
app/lib/bridge_cache/plugins/csv_dump.rb

.condition_sql(klass, columns) ⇒ Object

This method generates SQL that looks like: (users.sis_id, users.email) IS DISTINCT FROM (EXCLUDED.sis_id, EXCLUDED.email)

This prevents activerecord-import from setting the updated_at column for rows that haven’t actually changed. This allows you to query for rows that have changed by doing something like:

started_at = Time.now run_the_users_sync! changed = User.where(“updated_at >= ?”, started_at)



82
83
84
85
86
# File 'app/lib/bridge_cache/plugins/csv_dump.rb', line 82

def self.condition_sql(klass, columns)
  columns_str = columns.map { |c| "#{klass.quoted_table_name}.#{c}" }.join(', ')
  excluded_str = columns.map { |c| "EXCLUDED.#{c}" }.join(', ')
  "(#{columns_str}) IS DISTINCT FROM (#{excluded_str})"
end