class ActiveSchema::Column::Pruner

Public Class Methods

new(connection, table_name, specified_columns) click to toggle source
# File lib/active_schema/column.rb, line 38
def initialize connection, table_name, specified_columns
  @connection, @table_name, @specified_columns = \
    connection, table_name, specified_columns.map(&:to_s)
  @connection.reset!
  prune_as_needed
end

Private Instance Methods

existing_columns() click to toggle source
# File lib/active_schema/column.rb, line 60
def existing_columns
  @connection.columns(@table_name).map(&:name).map(&:to_s)
end
primary_key() click to toggle source
# File lib/active_schema/column.rb, line 52
def primary_key
  @connection.primary_key(@table_name)
end
prune_as_needed() click to toggle source
# File lib/active_schema/column.rb, line 46
def prune_as_needed
  (existing_columns - Array(primary_key) - @specified_columns).each do |column_name|
    remove_column(column_name)
  end
end
remove_column(column_name) click to toggle source
# File lib/active_schema/column.rb, line 56
def remove_column column_name
  @connection.remove_column(@table_name, column_name)
end