Module: SchemaPlus::ActiveRecord::ConnectionAdapters::IndexDefinition

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

Overview

SchemaPlus extends the IndexDefinition object to return information about partial indexes and case sensitivity (i.e. Postgresql support).

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#conditionsObject (readonly)

Returns the value of attribute conditions.



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

def conditions
  @conditions
end

#expressionObject (readonly)

Returns the value of attribute expression.



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

def expression
  @expression
end

#kindObject (readonly)

Returns the value of attribute kind.



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

def kind
  @kind
end

Class Method Details

.included(base) ⇒ Object

:nodoc:



9
10
11
# File 'lib/schema_plus/active_record/connection_adapters/index_definition.rb', line 9

def self.included(base)  #:nodoc:
  base.alias_method_chain :initialize, :schema_plus
end

Instance Method Details

#case_sensitive?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/schema_plus/active_record/connection_adapters/index_definition.rb', line 17

def case_sensitive?
  @case_sensitive
end

#initialize_with_schema_plus(*args) ⇒ Object

:nodoc:



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/schema_plus/active_record/connection_adapters/index_definition.rb', line 21

def initialize_with_schema_plus(*args) #:nodoc:
  # same args as add_index(table_name, column_names, options)
  if args.length == 3 and Hash === args.last
    table_name, column_names, options = args + [{}]
    initialize_without_schema_plus(table_name, options[:name], options[:unique], column_names, options[:lengths])
    @conditions = options[:conditions]
    @expression = options[:expression]
    @kind = options[:kind]
    @case_sensitive = options.include?(:case_sensitive) ? options[:case_sensitive] : true
  else # backwards compatibility
    initialize_without_schema_plus(*args)
    @case_sensitive = true
  end
end

#optsObject

returns the options as a hash suitable for add_index



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/schema_plus/active_record/connection_adapters/index_definition.rb', line 37

def opts #:nodoc:
  opts = {}
  opts[:name]           = name unless name.nil?
  opts[:unique]         = unique unless unique.nil?
  opts[:lengths]        = lengths unless lengths.nil?
  opts[:conditions]     = conditions unless conditions.nil?
  opts[:expression]     = expression unless expression.nil?
  opts[:kind]           = kind unless kind.nil?
  opts[:case_sensitive] = case_sensitive? unless @case_sensitive.nil?
  opts
end