Rails 4用索引重命名列

时间:2018-02-22 11:00:08

标签: ruby ruby-on-rails-4 jruby database-migration ruby-on-rails-4.2

根据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)

2 个答案:

答案 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,了解详细信息。