运行rails迁移会在架构中移动索引

时间:2017-05-26 16:43:23

标签: ruby-on-rails ruby-on-rails-5

有问题的应用程序最初是作为Rails 4应用程序创建的,后来升级到Rails 5。

我将创建一个可能如下所示的rails迁移:

class AddPubliclyVisibleToGcodeMacros < ActiveRecord::Migration[5.0]
  def change
    add_column :gcode_macros, :publicly_visible, :boolean, default: false
  end
end

当我运行它时,我希望架构更新几行,特别是将t.boolean "publicly_visible", default: false 添加到gcode_macros表。

但是,运行迁移会对我的架构产生很多更改,主要是将索引从create_table块外部移动到其中。

enter image description here

我对这里发生的事情感到很困惑。这不是突然发生的事情,我现在已经解决了一段时间。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

答案是这就是架构转储器在Rails中的工作方式。它采用数据库中的模式,与首先创建结构的方式完全无关,无论是迁移还是直接sql语句。

因此,当您在db中创建新迁移或更改任何内容时,将根据数据库转储新架构。

修改

我应该补充一点,如果使用sql语句直接更改db,则不会更新schema.rb,而不是通过迁移。只有在任何一个

rake db:migrate

或......

rake db:schema:dump
运行

是更新schema.rb文件。