使用Rails迁移删除列将删除与该列关联的索引

在Rails 2中,使用Rails迁移删除列也会更改/删除与列相关的索引吗? 如果没有,而你必须手动更改/删除每个索引,不应该它自动?

谢谢(来自Rails新手)

不,不幸的是,您必须使用remove_index方法手动从您的迁移中删除索引。

在Rails 4中,索引自动删除列删除。

为了澄清,在迁移内部删除2列索引的语法如下

 remove_index :actions, :column => [:user_id,:action_name] 

或者通过名字,从我的angular度来看是一个更糟糕的select

 remove_index :actions, :name => "index_actions_on_user_id_and_action_name" 

作为一个警告,如果您删除列,Rails 4 删除索引,您应该指定列types。 没有列types,运行rake db:rollback将会返回

 rake aborted! StandardError: An error has occurred, all later migrations canceled: remove_column is only reversible if given a type. 

我正在尝试删除索引的外键列。 即使在更改块中指定index: true也不会使列在回滚时可逆。

在Rails> 3.2.16中,删除列将删除索引。

如果你想删除索引,你应该使用remove_index ,如果你使用remove_column它会删除索引,但是你不能运行rake db:rollback。 正如吉姆所说。

 remove_column is only reversible if given a type.