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

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

Overview

SchemaPlus::Index adds several methods to Column

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#model=(value) ⇒ Object (writeonly)

model assigned set by Middleware::Model::Columns



10
11
12
# File 'lib/schema_plus/columns/active_record/connection_adapters/column.rb', line 10

def model=(value)
  @model = value
end

Instance Method Details

#as_json(options = nil) ⇒ Object

The default as_jon includes all instance variables. but



44
45
46
# File 'lib/schema_plus/columns/active_record/connection_adapters/column.rb', line 44

def as_json(options=nil)
  instance_values.except "model", "adapter"
end

#case_sensitive?Boolean

Returns true if the column is in one or more indexes that are case sensitive. Will raise exception if IndexDefinition#case_sensitive? isn’t defined, i.e. if schema_plus_pg_indexes hasn’t been loaded.

Returns:

  • (Boolean)


38
39
40
# File 'lib/schema_plus/columns/active_record/connection_adapters/column.rb', line 38

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.



15
16
17
# File 'lib/schema_plus/columns/active_record/connection_adapters/column.rb', line 15

def indexes
  @indexes ||= @model.indexes.select{|index| index.columns.include? self.name}
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


52
53
54
55
56
57
58
59
60
# File 'lib/schema_plus/columns/active_record/connection_adapters/column.rb', line 52

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)


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

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.



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

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