class ActiveSchema::Column

Public Class Methods

new(connection, table_name, column_name, column_type, column_opts) click to toggle source
# File lib/active_schema/column.rb, line 4
def initialize connection, table_name, column_name, column_type, column_opts
  @connection, @table_name, @column_name, @column_type, @column_opts = \
    connection, table_name, column_name, column_type, column_opts
  return add_column unless column_exists?
  update_column_type_if_needed
  update_column_if_needed
end

Private Instance Methods

add_column() click to toggle source
# File lib/active_schema/column.rb, line 33
def add_column
  @connection.add_column(@table_name, @column_name, @column_type, @column_opts)
end
column_exists?(type = nil, opts = {}) click to toggle source
# File lib/active_schema/column.rb, line 29
def column_exists? type = nil, opts = {}
  @connection.column_exists?(@table_name, @column_name, type, opts)
end
update_column(type, opts = {}) click to toggle source
# File lib/active_schema/column.rb, line 25
def update_column type, opts = {}
  @connection.change_column(@table_name, @column_name, type, opts)
end
update_column_if_needed() click to toggle source
# File lib/active_schema/column.rb, line 17
def update_column_if_needed
  @connection.reset! # reconnect to get fresh columns info
  @column_opts.each_pair do |o,v|
    next if column_exists?(@column_type, o => v)
    update_column(@column_type, o => v)
  end
end
update_column_type_if_needed() click to toggle source
# File lib/active_schema/column.rb, line 13
def update_column_type_if_needed
  update_column(@column_type) unless column_exists?(@column_type)
end