ruby - Rails 4 用索引重命名列

标签 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)

最佳答案

可能索引的名称不是数据库生成的,它是我们在创建索引时给出的,在这种情况下,索引的名称不会得到任何更新,但肯定会更新引用,这将以相同的方式工作。

如果您想更新索引名称,您可以删除索引并重新创建它。

DROP INDEX index_feature_roles_on_feature_id; 

在更新的列上重新创建索引作为

CREATE INDEX index_feature_roles_on_test_id ON feature_roles;

如果从长远来看,其他几个开发人员可能正在从事同一件事,这将消除混淆,这可能会有所帮助。

关于ruby - Rails 4 用索引重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48925738/

相关文章:

ruby-on-rails - 帮助将 Rails 2 数据库逻辑转换为 Rails 3.1/PostgreSQL

ruby-on-rails - Rails Assets 管道 : how to create custom manifest file

JRuby - 停止脚本执行

ruby - 有没有类似教程的文章解释如何在 Android 上使用 jRuby?

ruby - 在 Keymando 中重新映射大写锁定键?

ruby - 用英语连接一个数组

ruby - ruby 中大型数组中的快速近似字符串匹配

ruby-on-rails - will_paginate gem : Limit number of pages

ruby-on-rails - 如何在 ActiveModel::Serializer 中使用 `root_url`?

android - Android 上的 Ruby 处理