首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >save/save到底是什么!做?

save/save到底是什么!做?
EN

Stack Overflow用户
提问于 2010-01-04 10:12:01
回答 1查看 5.1K关注 0票数 5

我注意到rails中一个常见的错误检查行是:

代码语言:javascript
复制
if @user.save!

而不是像这样

代码语言:javascript
复制
Save
If Save is successful
 Blah
Else
 Blah
End

所以我对"if @user.save!“的理解它既保存对象,又在成功的情况下返回true/false。如果我稍后调用它,例如:

代码语言:javascript
复制
@user.save!
if @user.save!
  blah
end

我是否执行了两次save查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-04 10:16:50

我承认有一点不同,但尽管如此,还是很重要的。这里的文档相当不错:

保存!

带save的

!验证始终运行。如果其中任何一个失败,ActiveRecord::RecordInvalid都会被抛出。

保存(perform_validation=true)

如果perform_validation为true,则运行验证。如果其中任何一个失败,操作将被取消,并且save返回false。如果该标志为false,则完全绕过验证。有关详细信息,请参阅ActiveRecord::Validations。

因此,save!不会只返回true或false,而只会在成功时返回true,如果失败则会引发异常。

这种区别的目的是,在save!中,您可以使用标准的ruby工具来捕获控制器中的错误,而save允许您使用标准的if子句来执行相同的操作。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1997201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档