根据this,在rails 4中,重命名列也会重命名索引。
class TestMigration < ActiveRecord::Migration
def change
binding.pry
rename_column :feature_roles, :feature_id, :test_id
binding.pry
end
end
当我在迁移之前列出此表的索引时,特定索引的名称为index_feature_roles_on_feature_id
,即使在迁移之后,它仍保持不变。为什么不更新到index_feature_roles_on_test_id
?
我正在使用Jruby 9.1.12.0(ruby 2.3.3)
答案 0 :(得分:0)
索引的名称可能不是数据库生成的,它是我们在创建索引时给出的索引,在这种情况下索引的名称不会得到任何更新,但肯定会更新引用,这将以相同的方式工作。 / p>
您仍然希望更新可以删除索引的索引名称并重新创建它。
DROP INDEX index_feature_roles_on_feature_id;
发布在更新列上重新创建索引
CREATE INDEX index_feature_roles_on_test_id ON feature_roles;
如果从长远来看,这可能是有帮助的,其他几个开发人员可能正在处理相同的事情,这将消除混淆。
答案 1 :(得分:0)
activerecord-jdbc-adapter宝石中有潜在的错误。请查看GitHub issue,了解详细信息。