close
save 可以接收一個參數 :perform_validation => true/false,預設為 true。
當 perform_validation 被設為 false 時不會過 validation.
save! 沒有任何額外參數,一定會過 validation.
在執行 save 時,如果有任一個 before_* validation 失敗,整個 save 會回傳 false。
而在執行 save! 時,before_* validation 失敗則是會丟一個例外 ActiveRecord::RecordNotSaved 回來。
所以在應用上:
- 在 controller 裡一般使用 save,免得每一個 save 失敗都要做 rescue,因為使用者的輸入錯誤是很自然會發生的;
- 而在像是 rake 或 test 中,就應該使用 save!,方便 debug.
全站熱搜