假设一个简单的ActiveRecord模型对应于只有两列id
和name
的表:
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与将作为类方法直接调用它有不同的行为?
答案 0 :(得分:3)
Model.create(...)
对我来说很好。
使用Model.create!
可能值得使用,如果出现验证错误,这可能是导致未保存记录的原因,或者您可以检查返回实例上的errors
,则会引发异常。我之前被Model.create
咬了,因为它让你不得不检查对象是否被保存以及出于什么原因。