2009-07-07 77 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咬过,因为它会让你检查对象是否被保存,以及是什么原因。

相关问题