[英]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.