使用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.