此add_index命令的索引名称是什么

时间:2013-02-13 20:22:40

标签: ruby-on-rails ruby-on-rails-3.2

在Schema中我有这个:

 add_index "key_performance_indicators", ["organization_id"], :name => "index_key_performance_inds_on_organization_id"

我想写一个remove_index迁移来删除这个索引,但是无法弄清楚我应该使用什么索引名称?是key_performance_inds还是performance_inds_on_organization_id?或者是其他东西?

如果我使用可视化管理工具,这就是它所显示的内容:

enter image description here

2 个答案:

答案 0 :(得分:4)

您已将:name选项传递给add_index,因此索引的名称就是您设置的名称。在这种情况下,index_key_performance_inds_on_organization_id因此将其删除:

remove_index 'key_performance_indicators', :name => 'index_key_performance_inds_on_organization_id'

答案 1 :(得分:2)

Tomdarkness提供了正确的答案,但您可能希望完全省略:name部分,除非需要符合特定的数据库架构。 add_index默认为您选择合理的索引名称,remove_index将使用相同的默认值。

例如:

add_index :key_performance_indicators, :organization_id

以上行将添加名称为index_key_performance_indicators_on_organization_id的索引,以下内容将删除它:

remove_index :key_performance_indicators, :organization_id