Writing migrations
上一篇文章講的是如何製作 migration 檔案,這次要來講的是如何寫裡面的內容, Rails guide 裡面提到很多方法,我會把比較常使用的寫下來,詳細內容請看這裡,另外下面的範例也是來自 Rails Guide
- Create table
如果是要製作一個表格,我們可以直接在下面放欄位的名字
1 | create_table :users do |t| |
這個檔案只要執行 rails db:migrate
就會幫我們做出一個 users 的 table,然後裡面有一個名字的欄位,格式是 string
要注意的是每一次生出一個 table 他都會自動幫我們生出一個叫做 id 的欄位,預設為這個表格的 primary key,如果想要自己指定 primary key 可以用 :primary_key
這個選項,或者你不想要 primary key 也可以用 id:false
來處理
- Change table
更改表格內容也是一個常見動作
1 | change_table :products do |t| |
上面這個 migration 檔會對 products 表格做幾件事情
1.把 description 跟 name 的欄位拿掉
2.新增一個 part_name 欄位並加上 index
3.把 upcode 欄位改成 upc_code 欄位
- Change colun
更改表格欄位也是一個常見動作
1 | change_column :products, :part_number, :text |
上面這個例子是把 products 表格中的 part_name 欄位資料改成使用 text 這個格式儲存
另外 change column 是一個不可逆的指令,主要是因為他並沒有紀錄一開始你的資料格式
如果要可逆的話建議可改成使用 up
跟 down
的方法,而不是用 change
,這兩種方法分別寫明當你今天 migrate 的時候執行的是 up 裡面的內容,而如果是 rollback 就是使用 down 裡面的內容
1 | change_column_null :products, :name, false |
上面的例子是把 products 表格中的 name 指定為不能是 null 的欄位,下一行是把 approve 這個欄位的初始值設為 false
今天的介紹就先到這邊了,希望可以對英文苦手的初學者有點幫助,但如果要做更複雜的操作還是要去看 Rails Guide 本身的說明或者翻 API 喔~
參考資料: