iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
0
Modern Web

Rails guide / Ruby API study系列 第 20

[ Rails guide study ]Day20 寫 migration 檔內容

  • 分享至 

  • xImage
  •  

[ Rails guide study ] Day20

首先,來聽首歌吧
https://www.youtube.com/watch?v=sLTRSakuugs
大家一定都聽過 Maroon5 的 Lost stars 吧,曼哈頓戀習曲裡面的女主角也有唱另一個版本喔,這個比較柔和的版本我個人也非常喜歡,推薦給大家~(BTW, 電影本身也好看)


Writing migrations

上一篇文章講的是如何製作 migration 檔案,這次要來講的是如何寫裡面的內容, Rails guide 裡面提到很多方法,我會把比較常使用的寫下來,詳細內容請看這裡,另外下面的範例也是來自 Rails Guide

  1. Create table

如果是要製作一個表格,我們可以直接在下面放欄位的名字

create_table :users do |t|
  t.string :name
end

這個檔案只要執行 rails db:migrate 就會幫我們做出一個 users 的 table,然後裡面有一個名字的欄位,格式是 string

要注意的是每一次生出一個 table 他都會自動幫我們生出一個叫做 id 的欄位,預設為這個表格的 primary key,如果想要自己指定 primary key 可以用 :primary_key 這個選項,或者你不想要 primary key 也可以用 id:false 來處理

  1. Change table

更改表格內容也是一個常見動作

change_table :products do |t|
  t.remove :description, :name
  t.string :part_number
  t.index :part_number
  t.rename :upccode, :upc_code
end

上面這個 migration 檔會對 products 表格做幾件事情

1.把 description 跟 name 的欄位拿掉
2.新增一個 part_name 欄位並加上 index
3.把 upcode 欄位改成 upc_code 欄位

  1. Change colun

更改表格欄位也是一個常見動作

change_column :products, :part_number, :text

上面這個例子是把 products 表格中的 part_name 欄位資料改成使用 text 這個格式儲存

另外 change column 是一個不可逆的指令,主要是因為他並沒有紀錄一開始你的資料格式

如果要可逆的話建議可改成使用 updown 的方法,而不是用 change,這兩種方法分別寫明當你今天 migrate 的時候執行的是 up 裡面的內容,而如果是 rollback 就是使用 down 裡面的內容

change_column_null :products, :name, false
change_column_default :products, :approved, from: true, to: false

上面的例子是把 products 表格中的 name 指定為不能是 null 的欄位,下一行是把 approve 這個欄位的初始值設為 false

今天的介紹就先到這邊了,希望可以對英文苦手的初學者有點幫助,但如果要做更複雜的操作還是要去看 Rails Guide 本身的說明或者翻 API 喔~

參考資料:

Rails Guide

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


上一篇
[ Rails guide study ]Day19 什麼是 migration 檔案?
下一篇
[ Rails guide study ]Day21 migration 檔的執行 / rollback / 其他動作
系列文
Rails guide / Ruby API study30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言