class ActiveRecord::ConnectionAdapters::IndexDefinition
:nodoc:
adapters. e.g. ActiveRecord::ConnectionAdapters::MySQL::SchemaStatements#indexes
this type are typically created and returned by methods in database
Abstract representation of an index definition on a table. Instances of
:nodoc:
def column_options
def column_options { length: lengths, order: orders, opclass: opclasses, } end
def concise_options(options)
def concise_options(options) if columns.size == options.size && options.values.uniq.size == 1 options.values.first else options end end
def defined_for?(columns = nil, name: nil, unique: nil, valid: nil, include: nil, nulls_not_distinct: nil, **options)
def defined_for?(columns = nil, name: nil, unique: nil, valid: nil, include: nil, nulls_not_distinct: nil, **options) columns = options[:column] if columns.blank? (columns.nil? || Array(self.columns) == Array(columns).map(&:to_s)) && (name.nil? || self.name == name.to_s) && (unique.nil? || self.unique == unique) && (valid.nil? || self.valid == valid) && (include.nil? || Array(self.include) == Array(include).map(&:to_s)) && (nulls_not_distinct.nil? || self.nulls_not_distinct == nulls_not_distinct) end
def initialize(
def initialize( table, name, unique = false, columns = [], lengths: {}, orders: {}, opclasses: {}, where: nil, type: nil, using: nil, include: nil, nulls_not_distinct: nil, comment: nil, valid: true ) @table = table @name = name @unique = unique @columns = columns @lengths = concise_options(lengths) @orders = concise_options(orders) @opclasses = concise_options(opclasses) @where = where @type = type @using = using @include = include @nulls_not_distinct = nulls_not_distinct @comment = comment @valid = valid end
def valid?
def valid? @valid end