class RuboCop::Rails::SchemaLoader::Index

Represent an index

Attributes

columns[R]
expression[R]
name[R]
unique[R]

Public Class Methods

new(node) click to toggle source
# File lib/rubocop/rails/schema_loader/schema.rb, line 140
def initialize(node)
  @columns, @expression = build_columns_or_expr(node.first_argument)
  @unique = nil

  analyze_keywords!(node)
end

Private Instance Methods

analyze_keywords!(node) click to toggle source
# File lib/rubocop/rails/schema_loader/schema.rb, line 157
def analyze_keywords!(node)
  pairs = node.arguments.last
  return unless pairs.hash_type?

  pairs.each_pair do |k, v|
    case k.value
    when :name
      @name = v.value
    when :unique
      @unique = true
    end
  end
end
build_columns_or_expr(columns) click to toggle source
# File lib/rubocop/rails/schema_loader/schema.rb, line 149
def build_columns_or_expr(columns)
  if columns.array_type?
    [columns.values.map(&:value), nil]
  else
    [[], columns.value]
  end
end