[ Rails guide study ] Day20
首先,來聽首歌吧
https://www.youtube.com/watch?v=sLTRSakuugs
大家一定都聽過 Maroon5 的 Lost stars 吧,曼哈頓戀習曲裡面的女主角也有唱另一個版本喔,這個比較柔和的版本我個人也非常喜歡,推薦給大家~(BTW, 電影本身也好看)
上一篇文章講的是如何製作 migration 檔案,這次要來講的是如何寫裡面的內容, Rails guide 裡面提到很多方法,我會把比較常使用的寫下來,詳細內容請看這裡,另外下面的範例也是來自 Rails Guide
如果是要製作一個表格,我們可以直接在下面放欄位的名字
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
來處理
更改表格內容也是一個常見動作
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 欄位
更改表格欄位也是一個常見動作
change_column :products, :part_number, :text
上面這個例子是把 products 表格中的 part_name 欄位資料改成使用 text 這個格式儲存
另外 change column 是一個不可逆的指令,主要是因為他並沒有紀錄一開始你的資料格式
如果要可逆的話建議可改成使用 up
跟 down
的方法,而不是用 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 喔~
參考資料:
本文章同步分享於 http://anthonychao.site/