class ActiveRecord::Base

Public Class Methods

reset_pk_sequence() click to toggle source
# File lib/activerecord_reset_pk_sequence.rb, line 6
def reset_pk_sequence
  case ActiveRecord::Base.connection.adapter_name
  when 'SQLite'
    ActiveRecord::Base.connection.execute(sqlite_update_seq_sql)
  when 'Mysql'
    ActiveRecord::Base.connection.execute(mysql_update_seq_sql)
  when 'PostgreSQL'
    ActiveRecord::Base.connection.reset_pk_sequence!(table_name)
  else
    raise 'Task not implemented for this DB adapter'
  end
end

Private Class Methods

mysql_update_seq_sql() click to toggle source
# File lib/activerecord_reset_pk_sequence.rb, line 26
def mysql_update_seq_sql
  new_max_id = maximum(primary_key) + 1 || 1
  "ALTER TABLE '#{table_name}' AUTO_INCREMENT = #{new_max_id};"
end
sqlite_update_seq_sql() click to toggle source
# File lib/activerecord_reset_pk_sequence.rb, line 21
def sqlite_update_seq_sql
  new_max_id = maximum(primary_key) || 0
  "UPDATE sqlite_sequence SET seq = #{new_max_id} WHERE name = '#{table_name}';"
end