class CreateGenerator

Public Instance Methods

copy_migration() click to toggle source
# File lib/data_classification/generators/data_classification/create_generator.rb, line 18
def copy_migration
  validate!
  set_local_assigns!
  migration_template 'create_migration.rb.erb', "db/migrate/#{migration_file_name}.rb"
end

Protected Instance Methods

set_local_assigns!() click to toggle source
# File lib/data_classification/generators/data_classification/create_generator.rb, line 26
def set_local_assigns!
  @table_classifications = table_column_classification.map { |params| params.split(':') }.sort_by { |params| params[0] }
  tables = @table_classifications.map { |table, _column, _classification| table }.uniq.to_sentence.gsub(' ', '_')

  @migration_file_name = "create_data_classification_for_#{tables}"
  @migration_class_name = "CreateDataClassification#{tables.camelize}"
end
validate!() click to toggle source
# File lib/data_classification/generators/data_classification/create_generator.rb, line 34
def validate!
  table_column_classification.each do |data|
    table, column, classification = data.split(':')

    if table.blank? || column.blank? || classification.blank?
      fail "All arguments require 3 parts <table>:<column>:<classification> referenced in '#{data}'"
    end
    unless ActiveRecord::Base.connection.table_exists?(table)
      fail "Table '#{table}' referenced in '#{data}' does not exist"
    end
    unless ActiveRecord::Base.connection.column_exists? table, column
      fail "Column '#{column}' on '#{table}' referenced in '#{data}' does not exist"
    end
    if DataClassification::DATA_CLASSIFICATIONS.map(&:to_s).exclude? classification
      fail "Data classification '#{classification}' referenced in '#{data}' is not valid, must be one of "\
        "#{DataClassification::DATA_CLASSIFICATIONS.join(', ')}"
    end
  end
end