據save bang your head, active record will drive you mad,我們應該避免使用save!
和rescue
成語特殊情況。鑑於此,說模型需要@post.mark_rejected
。何時在模型中使用`save`和`save!`?
如果mark_rejected
代碼失敗由於以下問題之一,應該拋出異常? :
- ,如果有一個驗證問題
- 如果非空的字段是被分配一個空
- ,如果有一個連接丟失數據庫
如果我們不扔一個例外,那麼:
- 控制器動作將不得不檢查返回值
mark_rejected
並做它的事 - 我們不希望從該方法調用的異常,所以我們不寫在控制器動作
rescue
條款,從而異常堆滿達(..wherever ..),將可能顯示爲一些(500 HTTP ?)錯誤
示例代碼:
def mark_rejected
...
save!
end
或
def mark_rejected
...
save
end
@Zabba這裏是[源代碼和save'的'文檔和'保存!'](https://github.com/rails/rails/blob/master/activerecord/lib/active_record/persistence.rb# L86)。 – JJD