少於 1 分鐘閱讀

前言

練習 Rails101 時,經常有此疑惑,為何新增時用 new,但在實際建立又用 create, 而後又看到 build 的用法,所以為此應該進一步研究一下。

說明

首先這邊需要將 new, build, create, save 先區分為兩類:

  1. 類方法: new, bulid, create
  2. 實例方法: save

而以下概述了這幾個類方法的差異:

  • new: 僅物件的建立
  • create: 物件的建立 + sql 的執行
  • build: 僅物件的建立,但用於一對多

由於 new、build 僅建立物件,因此須再使用實例方法 save 才能存入資料庫 而使用 create,則因為包含了 sql 的執行,所以不需再使用 save 存檔

至於 new 及 build 的差異,在於有關聯的 table 是否自動建立物件。

例如:

  • 使用 Wall.posts.new 時,Wall.posts 仍為空
  • 但是 Wall.posts.build 時,Wall.posts 已建立一筆新的資料

參考

  1. http://rubyer.me/blog/262/
  2. http://stackoverflow.com/questions/403671/the-differences-between-build-create-and-create-and-when-should-they-be-us

留言