iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0

Migration建立資料表係蝦密?

Rails使用了Migration資料庫遷移機制來定義資料庫結構,檔案位於db/migrate/目錄裡,目的在於:
讓資料庫的修改也可以納入版本控制系統,所有的變更都透過撰寫Migration檔案執行
資料庫更新只需要執行rails db:migrate
跨資料庫通用,不需修改程式就可以用在SQLite3、MySQL、Postgres等不同資料庫
在上一節產生Model程式時,Rails就會自動幫你產生對應的Migration檔案,也就是如db/migrate/20210920123300_create_walis.rb的檔案。
Rails會用時間來命名檔案,所以每次產生檔名都不同,可以避免多人協作時的衝突

https://ithelp.ithome.com.tw/upload/images/20210923/20140259csszR5AxLf.png


create_table區塊就是定義資料表結構的程式,
上一篇文章已經執行rails db:migrate來建立此資料表,
其中 timestamps 為在創建時自動新增的欄位,並會在執行過後,
自動產出兩個欄位,建立兩個時間(datetime)欄位:
資料建立時間 created_at 和最後更新時間 updated_at

Migration檔案不需要和Model一一對應,若要在原先的Migration檔案新增一個資料庫欄位,請執行:
https://ithelp.ithome.com.tw/upload/images/20210923/20140259OAvFd2vCPb.png

一個空的 migration 檔案在 db/migrate 目錄裡
Migration 有提供 API 讓我們可以變更資料庫結構

例如:

我們可以新增一個欄位。輸入rails g migration add_aliens_to_walis然後編輯這個Migration檔案:

https://ithelp.ithome.com.tw/upload/images/20210923/20140259Fzj4JTmeN9.png

add_column :walis, :aliens, :string 意思是
我在wali這個資料庫裡,增加一個叫aliens的欄位,型別是字串

接著執行rails db:migrate就會在walis表格中新增一個aliens的欄位,欄位型別是string。
Rails會記錄你已經對資料庫操作過哪些Migrations!!!

程式界的麻瓜新手,我努力地寫出自己看得懂的文章,有任何錯誤歡迎指正,乾蝦/images/emoticon/emoticon42.gif

參考資料:rails實戰聖經 / 為你自己學Ruby on Rails


上一篇
Day-8:Rails的CRUD
下一篇
Day-10:資料驗證係蝦米哇貴!?
系列文
海邊囝仔帶阿公阿嬤一起學 Ruby On Rails 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
王天君
iT邦新手 4 級 ‧ 2021-09-23 23:24:08

衝破玻璃門啊~
一起加油!

6666刷一波~!

我要留言

立即登入留言