Module: SchemaPlus::ActiveRecord::ConnectionAdapters::Column

Defined in:
lib/schema_plus/active_record/connection_adapters/column.rb

Overview

SchemaPlus adds several methods to Column

Instance Method Summary collapse

Instance Method Details

#case_sensitive?Boolean

Returns true if the column is in one or more indexes that are case sensitive

Returns:

  • (Boolean)


35
36
37
# File 'lib/schema_plus/active_record/connection_adapters/column.rb', line 35

def case_sensitive?
  indexes.any?{|i| i.case_sensitive?}
end

#indexesObject

Returns the list of IndexDefinition instances for each index that refers to this column. Returns an empty list if there are no such indexes.



13
14
15
16
# File 'lib/schema_plus/active_record/connection_adapters/column.rb', line 13

def indexes
  # list get filled by SchemaPlus::ActiveRecord::Base::columns_with_schema_plus
  @indexes ||= []
end

#required_onObject

Returns the circumstance in which the column must have a value:

nil     if the column may be null
:save   if the column has no default value
:update otherwise


43
44
45
46
47
48
49
50
51
# File 'lib/schema_plus/active_record/connection_adapters/column.rb', line 43

def required_on
  if null
    nil
  elsif default.nil?
    :save
  else
    :update
  end
end

#unique?Boolean

Returns true if the column is in a unique index. See also unique_scope

Returns:

  • (Boolean)


29
30
31
# File 'lib/schema_plus/active_record/connection_adapters/column.rb', line 29

def unique?
  indexes.any?{|i| i.unique}
end

#unique_scopeObject

If the column is in a unique index, returns a list of names of other columns in the index. Returns an empty list if it’s a single-column index. Returns nil if the column is not in a unique index.



21
22
23
24
25
# File 'lib/schema_plus/active_record/connection_adapters/column.rb', line 21

def unique_scope
  if index = indexes.select{|i| i.unique}.sort_by{|i| i.columns.size}.first
    index.columns.reject{|name| name == self.name}
  end
end