2009-07-07 309 views
1

假設對應一個表只有兩列,idname一個簡單的ActiveRecord模式:爲什麼調用create類作爲方法不保存記錄?

class Model < ActiveRecord::Base 
    def self.my_create(name) 
    create(:name => name) 
    end 
end 

如果我叫Model.my_create,記錄創建並保存:

>> Model.my_create('foo') 
=> #<Model id: 1, name: "foo"> 

但如果我打電話Model.create直,記錄是不是保存:

>> Model.create(:name => 'bar') 
=> #<Model id: nil, name: "bar"> 

在類方法中調用create的方式與調用它的方法不同有什麼不同?作爲的一個類方法?

回答

3

Model.create(...)適合我。

這可能值得使用Model.create!,如果有驗證錯誤可能導致記錄未被保存,或者您可以在返回的實例上檢查errors,則會引發異常。我以前被Model.create咬過,因爲它會讓你檢查對象是否被保存,以及是什麼原因。

相關問題