module IdRandomizer::PostgreSQL

Public Class Methods

randomize_ids(except) click to toggle source
# File lib/id_randomizer/postgresql.rb, line 5
def self.randomize_ids(except)
  blacklist = %w(schema_migrations ar_internal_metadata)
  blacklist += except.is_a?(Array) ? except : [except]
  models = ActiveRecord::Base.descendants.reject do |model|
    model.table_name.nil? || model.sequence_name.nil? || blacklist.include?(model.table_name)
  end
  models.each do |model|
    val = rand(100..1024)
    model.connection.execute("SELECT setval('#{model.sequence_name}', #{val});")
  end
end