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
-
#model ⇒ Object
writeonly
model assigned set by Middleware::Model::Columns.
Instance Method Summary collapse
-
#as_json(options = nil) ⇒ Object
The default as_jon includes all instance variables.
-
#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 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(=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.
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 |
#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.
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_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
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
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_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.
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 |