class DbSubsetter::Scrambler

Clean or redact data to be exported

Public Class Methods

new() click to toggle source
# File lib/db_subsetter/scrambler.rb, line 15
def initialize
  @column_index_cache = {}
end

Public Instance Methods

scramble(table, row) click to toggle source
# File lib/db_subsetter/scrambler.rb, line 6
def scramble(table, row)
  scramble_method = "scramble_#{table.downcase}"
  if respond_to? scramble_method
    send(scramble_method, row)
  else
    row
  end
end

Protected Instance Methods

scramble_column(table, column, row_data, value) click to toggle source
# File lib/db_subsetter/scrambler.rb, line 21
def scramble_column(table, column, row_data, value)
  row_data[column_index(table, column)] = value
end

Private Instance Methods

column_index(table, column) click to toggle source
# File lib/db_subsetter/scrambler.rb, line 27
def column_index(table, column)
  @column_index_cache["#{table}##{column}"] ||=
    ActiveRecord::Base.connection.columns(table).map.(&:name).index(column.to_s)
end