iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
0
Modern Web

Rails guide / Ruby API study系列 第 21

[ Rails guide study ]Day21 migration 檔的執行 / rollback / 其他動作

  • 分享至 

  • xImage
  •  

首先,來聽首歌吧
Yes
雖然是首很老的歌,但她唱這首歌真的太好聽了~


執行 migration

當建好 migration 檔案之後,接著還需要執行才會把檔案中的改變做出來喔!

一般來說我們都單純的使用下面這指令

rails db:migrate

這指令會把所有還沒執行過的 migration 檔案執行一次,另外同時隱藏著更新 db/schema.rb 這個檔案的指令

除此之外,我們還可以指定要更新到哪個版號

rails db:migrate VERSION=20190921120000

如果這個版本比我們目前的版號更後面,他會執行還沒執行過的檔案中的 change 跟 up 內容直到執行完這個 migration 檔為止,在這之後的檔案不執行

如果這個版本比較前面,會執行我們這版本跟這個檔案之間所有 down 的內容,但不包括這個檔案本身


Rollback migraion

有種狀況也非常常見,那就是我們執行完 migration 檔之後才發現內容有錯,這種情況該怎麼辦?

如果在你還沒推上去 github 之前,這個改變只存在你的本機端,這時候可以用下面這指令

rails db:rollback

他會回復上一個 migration 的內容(如果是 reversible 的話),這時候你就可以再去修改 migration 的內容然後再 migrate 一次,但如果你已經推上去 github 則最好不要輕易改 migration 的內容,很可能造成大家的困擾

除此之外我們還可以指定要 rollback 幾步

rails db:rollback STEP=3

Redo

另外,還可以用 redo 確認剛剛執行的 migration 檔案是否 reversible

rails db:migrate:redo

他會執行一次 rollback 之後再執行一次 migration


執行 migration 的環境

在某些特定情況下,我們會需要單純執行某個環境的 migration

rails db:migrate RAILS_ENV=test

上面這個例子會在測試環境下執行 rails db:migrate

以上這些就是常見的如何操作跟 migration 相關的動作喔!希望對某些初學者有幫助~

參考資料:

Rails Guide

本文章同步分享於 http://anthonychao.site/


上一篇
[ Rails guide study ]Day20 寫 migration 檔內容
下一篇
[ Rails guide study ]Day22 Active Storage 使用
系列文
Rails guide / Ruby API study30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言