instance method
index_exists?
Ruby on Rails 7.0.10
Since v2.3.18Signature
index_exists?(table_name, column_name, **options)
Checks to see if an index exists on a table for a given index definition.
# Check an index exists index_exists?(:suppliers, :company_id) # Check an index on multiple columns exists index_exists?(:suppliers, [:company_id, :company_type]) # Check a unique index exists index_exists?(:suppliers, :company_id, unique: true) # Check an index with a custom name exists index_exists?(:suppliers, :company_id, name: "idx_company_id")
Parameters
-
table_namereq -
column_namereq -
optionskeyrest
Source
# File activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb, line 99
def index_exists?(table_name, column_name, **options)
checks = []
column_name = options[:column] if column_name.nil?
if column_name.present?
column_names = Array(column_name).map(&:to_s)
checks << lambda { |i| Array(i.columns) == column_names }
end
checks << lambda { |i| i.unique } if options[:unique]
checks << lambda { |i| i.name == options[:name].to_s } if options[:name]
indexes(table_name).any? { |i| checks.all? { |check| check[i] } }
end
Defined in activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb line 99
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::ConnectionAdapters::SchemaStatements