这在Rails中有什么作用?
create! do |user|
#initialise user
end
我认为它创建了一个用户对象并将其保存到数据库中。与仅说user.new(...)
和user.save()
?
答案 0 :(得分:21)
简而言之:
create!
引发异常,而create
返回对象(未保存的对象,如果它未通过验证)。save!
在save
返回true
/ false
时出现错误。
save
不接受属性,create
会这样做。 new
无法保存。 new
与build
上下文中的ActiveRecord
类似。
create
保存到数据库并返回true
或false
,具体取决于模型验证。
create!
保存到数据库,但如果模型验证(或任何其他错误)中存在错误,则会引发异常。
答案 1 :(得分:3)
如果创建记录失败,create!
会抛出异常,new
然后save
(或只有create
没有感叹号)会以静默方式退出。
答案 2 :(得分:-2)
create
获取属性,因此在这里使用块有点不寻常。
您提到的代码是在传递给create!
的块中进行初始化
它原则上与new
相同,然后是初始化,然后是save!
保存,保存!,创建,停止!,更新,更新等等有很多变化, 在验证方面也存在差异,并且回调
有关详细信息,请查看API :(在第一个链接中讨论)
http://api.rubyonrails.org/classes/ActiveRecord/Base.html