ruby-on-rails - 使用 Rails Migrations 在不知道名称的情况下删除索引

标签 ruby-on-rails database indexing migration

我有一个包含复合索引的表,该索引不是通过 Rails 迁移创建的。现在,我需要创建一个 Rails 迁移来删除该索引并创建一个新索引,但我不一定知道索引的名称。

我知道可以在迁移步骤中获取表名和列名的列表。是否可以获取特定表上的索引名称列表?或者,换个角度看,是否可以删除表上的所有 索引?还是编写我自己的特定于数据库的 SQL 查询来获取此信息的唯一选择?

最佳答案

您可以通过以下方式获取表上所有索引的详细信息:

ActiveRecord::Base.connection.indexes('tablename')

这将返回一组 ActiveRecord::ConnectionAdapters::IndexDefinition 对象,每个对象都有一个 #name#columns 方法。

关于ruby-on-rails - 使用 Rails Migrations 在不知道名称的情况下删除索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1334714/

相关文章:

ruby-on-rails - 在 Ruby on Rails 中,create 和 create 之间有什么区别! API 文档没有吗?

ruby-on-rails - 如何在 ActiveAdmin 中设置父菜单优先级?

mysql - 将行转换为列的查询

java - executeUpdate() 只给出返回值 1

mysql - 向 AP 数据库添加索引

php - 打破 Wordpress post 循环并继续它

mysql - 记录查询在 mysql 中缺少索引

ruby-on-rails - RoR 3.2.8 : Is there an HTML5 combobox helper?

ruby-on-rails - will_paginate 默认显示最后一页(保持时间顺序)

ruby-on-rails - 如何限制某人删除自己在 Rails 中的评论?