2016-03-04 91 views
0

我的問題非常多與此相關的一個Should I delete migration after rollback遷移狀態在哪裏保存?

我有我的原遷移文件20140731141350_create_users.rb

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :email 
     t.string :password 

     t.timestamps 
    end 
    end 
end 

爲了這,我需要添加一個列,所以我創建的遷移 20140804125449_add_salt_colum_to_users.rb

class AddSaltColumToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :salt, :string 
    end 
end 

但都靈3G發展我意識到列沒有必要 並與未使用 20140804125449_add_salt_colum_to_users.rb遷移文件執行

rake db:migrate:down VERSION=20140731141350 

現在我離開了。

我的問題是如果我不刪除這個遷移文件,這個遷移的這個「下」狀態保存在哪裏?遷移文件說add_column,所以如果我運行一個數據庫:再次遷移它將如何知道這個特定的文件已遷移?

回答

1

db:migrate:downdb:rollback是相似的。 down將數據庫恢復到指定的版本,回滾到以前的版本。要檢查是遷移應用Rails有所謂的「schema_migrations」存儲時間戳所有應用遷移特定的表,所以基本上當你運行db:migrate:down軌恢復遷移和schema_migrations刪除行。所以,如果你不刪除遷移文件 - 軌道將應用在未來db:migrate

+0

所以,如果我跑'分貝:migrate'我總是要遵循'分貝:遷移:down'在這個特定遷移? – user4584963

+0

讓我解釋一下這樣的遷移,就像是十幾張紙。例如,你有25頁,您決定取消第18頁。所以,你需要7頁(19..25 - 命令分貝:遷移:向下),距離目前的狀態是18頁。然後你銷燬第18頁(刪除文件)並放回7頁。結果你再也沒有第18頁了。 – jalkoby