[Note] Rails method new, build, create, save的差異
前言
練習 Rails101 時,經常有此疑惑,為何新增時用 new,但在實際建立又用 create, 而後又看到 build 的用法,所以為此應該進一步研究一下。
說明
首先這邊需要將 new, build, create, save 先區分為兩類:
- 類方法: new, bulid, create
- 實例方法: save
而以下概述了這幾個類方法的差異:
- new: 僅物件的建立
- create: 物件的建立 + sql 的執行
- build: 僅物件的建立,但用於一對多
由於 new、build 僅建立物件,因此須再使用實例方法 save 才能存入資料庫 而使用 create,則因為包含了 sql 的執行,所以不需再使用 save 存檔
至於 new 及 build 的差異,在於有關聯的 table 是否自動建立物件。
例如:
- 使用 Wall.posts.new 時,Wall.posts 仍為空
- 但是 Wall.posts.build 時,Wall.posts 已建立一筆新的資料
參考
留言