2014-12-02 83 views

回答

0

ActiveRecord::Base文檔:

創建(屬性=無){|對象| ...}

如果驗證通過,則創建一個對象(或多個對象)並將其保存到數據庫中。無論對象是否成功保存到數據庫,都會返回結果對象。

new(attributes = nil){| self if block_given?| ...}

新對象可以被實例化或者爲空(沒有傳遞施工參數)或預先設定屬性,但還沒有被保存(通過匹配相關的表的列名的鍵名的哈希)。在這兩種情況下,有效的屬性鍵都由關聯表的列名確定 - 因此,您不能擁有不屬於表列的屬性。

因此create實例化新對象,驗證它,然後將其保存到數據庫。而new只創建本地對象,但不會嘗試驗證或將其保存到數據庫。

https://stackoverflow.com/a/2472416/634120

+0

謝謝你,但我很困惑,我願做只使用新的?你能提供一個例子嗎? – 2014-12-02 16:40:10

+0

如果你不想立即保存,你可以做'something = Something.new',然後'如果something.save ...'或者如果你以後不能擁有一些屬性,那麼你可以創建它,然後設置更多屬性,例如'something.property = variable'然後'save'。只取決於你在做什麼。 'new'可以派上用場,但'create'可能更常用。 – martincarlin87 2014-12-02 16:44:59

+0

完美的解釋。謝謝! – 2014-12-02 16:47:09