有问题的应用程序最初是作为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
块外部移动到其中。
我对这里发生的事情感到很困惑。这不是突然发生的事情,我现在已经解决了一段时间。
非常感谢任何帮助!
答案 0 :(得分:1)
答案是这就是架构转储器在Rails中的工作方式。它采用数据库中的模式,与首先创建结构的方式完全无关,无论是迁移还是直接sql语句。
因此,当您在db中创建新迁移或更改任何内容时,将根据数据库转储新架构。
修改强>
我应该补充一点,如果使用sql语句直接更改db,则不会更新schema.rb
,而不是通过迁移。只有在任何一个
rake db:migrate
或......
rake db:schema:dump
运行是更新schema.rb
文件。