執行 migration
當建好 migration 檔案之後,接著還需要執行才會把檔案中的改變做出來喔!
一般來說我們都單純的使用下面這指令來執行
1 | rails db:migrate |
這指令會把所有還沒執行過的 migration 檔案執行一次,另外同時隱藏著更新 db/schema.rb 這個檔案的指令
除此之外,我們還可以指定要更新到哪個版號
1 | rails db:migrate VERSION=20190921120000 |
如果這個版本比我們目前的版號更後面,他會執行還沒執行過的檔案中的 change 跟 up 內容直到執行完這個 migration 檔為止,在這之後的檔案不執行
如果這個版本比較前面,會執行我們這版本跟這個檔案之間所有 down 的內容,但不包括這個檔案本身
Rollback migraion
有種狀況也非常常見,那就是我們執行完 migration 檔之後才發現內容有錯,這種情況該怎麼辦?
如果在你還沒推上去 github 之前,這個改變只存在你的本機端,這時候可以用下面這指令
1 | rails db:rollback |
他會回復上一個 migration 的內容(如果是 reversible 的話),這時候你就可以再去修改 migration 的內容然後再 migrate 一次,但如果你已經推上去 github 則最好不要輕易改 migration 的內容,很可能造成大家的困擾
除此之外我們還可以指定要 rollback 幾步
1 | rails db:rollback STEP=3 |
Redo
另外,還可以用 redo 確認剛剛執行的 migration 檔案是否 reversible
1 | rails db:migrate:redo |
他會執行一次 rollback 之後再執行一次 migration
執行 migration 的環境
在某些特定情況下,我們會需要單純執行某個環境的 migration
1 | rails db:migrate RAILS_ENV=test |
上面這個例子會在測試環境下執行 rails db:migrate
以上這些就是常見的如何操作跟 migration 相關的動作喔!希望對某些初學者有幫助~
參考資料: