我注意到rails中常见的错误检查行是:
if @user.save!
Run Code Online (Sandbox Code Playgroud)
而不是像
Save
If Save is successful
Blah
Else
Blah
End
Run Code Online (Sandbox Code Playgroud)
所以我对"if @ user.save!"的理解 是它保存对象并返回true/false如果成功.如果我稍后再打电话,例如:
@user.save!
if @user.save!
blah
end
Run Code Online (Sandbox Code Playgroud)
我是否执行了两次保存查询?
我承认,有点不同,但重要的是.这里的文档非常好:
保存!
随着保存!验证总是运行.如果其中任何一个失败,则会引发ActiveRecord :: RecordInvalid.
保存(perform_validation =真)
如果perform_validation为true,则运行验证.如果其中任何一个失败,则取消操作并保存返回false.如果该标志是错误的,则完全绕过验证.有关更多信息,请参阅ActiveRecord :: Validations.
所以,救!不仅会返回真或假,而只会在成功时返回真实,如果失败则会引发豁免.
这种区别的目的是使用save!,您可以使用标准的ruby工具捕获控制器中的错误,而save可以使用标准的if子句来执行相同的操作.至少这就是我的想法.
| 归档时间: |
|
| 查看次数: |
2997 次 |
| 最近记录: |