class Reencryptor::GlobalToPerAttributeIVSalt::Migrator

Attributes

classes[RW]

Public Class Methods

new(classes_hash: nil) click to toggle source
# File lib/reencryptor/global_to_per_attribute_iv_salt/migrator.rb, line 7
def initialize (classes_hash: nil)
  self.classes = classes_hash
end

Public Instance Methods

fieldname(field) click to toggle source
# File lib/reencryptor/global_to_per_attribute_iv_salt/migrator.rb, line 27
def fieldname(field)
  "encrypted_#{field.to_s.downcase}".to_sym
end
fieldname_iv(field) click to toggle source
# File lib/reencryptor/global_to_per_attribute_iv_salt/migrator.rb, line 35
def fieldname_iv(field)
  "encrypted_#{field.to_s.downcase}_iv".to_sym
end
fieldname_old(field) click to toggle source
# File lib/reencryptor/global_to_per_attribute_iv_salt/migrator.rb, line 31
def fieldname_old(field)
  "encrypted_#{field.to_s.downcase}_old".to_sym
end
fieldname_salt(field) click to toggle source
# File lib/reencryptor/global_to_per_attribute_iv_salt/migrator.rb, line 39
def fieldname_salt(field)
  "encrypted_#{field.to_s.downcase}_salt".to_sym
end
generate() click to toggle source
# File lib/reencryptor/global_to_per_attribute_iv_salt/migrator.rb, line 11
def generate
  puts "Add the following lines to a new migration:"
  self.classes.each do |klass, fields|
    klass_name = klass.to_s.underscore.pluralize.to_sym
    fields.each do |f|
      field = f.to_s.underscore.to_sym
      field_old = fieldname_old(field)
      puts "rename_column :#{klass_name}, :#{fieldname(field)}, :#{field_old}"
      puts "add_column :#{klass_name}, :#{fieldname(field)}, :string"
      puts "add_column :#{klass_name}, :#{fieldname_iv(field)}, :string"
      puts "add_column :#{klass_name}, :#{fieldname_salt(field)}, :string"
    end
  end
  puts "#----- End of Migration -----#"
end