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
-
#case_sensitive? ⇒ Boolean
Returns true if the column is in one or more indexes that are case sensitive.
-
#indexes ⇒ Object
Returns the list of IndexDefinition instances for each index that refers to this column.
-
#required_on ⇒ Object
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.
-
#unique? ⇒ Boolean
Returns true if the column is in a unique index.
-
#unique_scope ⇒ Object
If the column is in a unique index, returns a list of names of other columns in the index.
Instance Method Details
#case_sensitive? ⇒ Boolean
Returns true if the column is in one or more indexes that are case sensitive
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 |
#indexes ⇒ Object
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_on ⇒ Object
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
29 30 31 |
# File 'lib/schema_plus/active_record/connection_adapters/column.rb', line 29 def unique? indexes.any?{|i| i.unique} end |
#unique_scope ⇒ Object
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 |