[英]rails 3 - difference between widget.save and widget.save!
有时我看到了! 保存之后,以及其他一些主动记录方法......有什么区别?
如果无法保存记录,则save
将返回false(例如,验证错误)。
save!
如果无法保存记录,将引发异常。 使用save!
当你非常确定它应该保存没有问题,如果它没有那么它是一个非常大的bug和异常是适当的。
使用的一般模式或惯例! 在rails中的方法结束处指示函数可以引发异常,而非bang方法只返回一个值。
不抛出异常的后果允许您将返回值用作正常处理的一部分。
if obj.save # yay, it worked! else # boo end
请注意,这不是Ruby强制执行的规则,只是一种约定。 其他库(如String的标准库)具有返回操作结果的方法,而不是修改对象的值。
String s="Hello, world" s.gsub("world", "Joe") # returns a new string object, leaving s alone s.gsub!("world", "Joe") # modifies the value of s
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.