2017-05-26 67 views
0

有問題的應用程序最初創建作爲一個Rails應用4,後來升級到Rails 5運行軌道遷移運動指標的模式

我將創建一個軌道遷移可能是這樣的,大約:

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

當我運行它時,我期望模式有更新的幾​​行,特別是添加到gcode_macros表。

但是,運行遷移會對我的模式創建大量更改,主要是將索引從create_table塊外部移動到其中。

enter image description here

林在最新這裏發生了相當混亂。這不是突然發生的事情,我剛剛一直在解決它一段時間。

任何幫助將不勝感激!

回答

1

答案是這就是架構翻車機在Rails中的工作原理。它從數據庫獲取模式,與首先創建結構無關,與遷移或直接的sql語句無關。

因此,當您創建新遷移或更改db中的任何內容時,將根據數據庫轉儲新模式。


編輯

我要補充的是,如果數據庫與SQL語句直接更改schema.rb不更新,也就是不通過遷移。只有當任一

rake db:migrate 

或...

rake db:schema:dump 

正在運行的是schema.rb文件更新。