在Rails 2中,删除带有Rails迁移的列还会更改/删除与该列关联的索引吗?如果没有,而且您还必须手动更改/删除每个索引,那么它是否应该自动化?
谢谢(来自Rails新手)
答案 0 :(得分:57)
从Rails 4开始,索引会在删除列时自动删除。
答案 1 :(得分:25)
不,遗憾的是,您必须使用remove_index
方法从迁移中手动删除索引。
答案 2 :(得分:6)
为了澄清,在迁移中,删除2列索引的语法如下
remove_index :actions, :column => [:user_id,:action_name]
或按名称,从我的观点来看,这是一个更糟糕的选择
remove_index :actions, :name => "index_actions_on_user_id_and_action_name"
答案 3 :(得分:5)
正如警告一样,如果删除列,Rails 4 将删除索引,则应指定列类型。如果没有列类型,则运行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
,也不会使回滚时列可逆。
答案 4 :(得分:0)
在Rails中> 3.2.16,删除列将删除索引。
答案 5 :(得分:0)
如果要删除索引,则应使用remove_column
,如果使用remove_column is only reversible if given a type.
,则会删除索引,但无法运行rake db:rollback。正如吉姆所说。
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);