!のつくメソッドを多用するのはおすすめしない。
例えばこれだとsave!でこけた場合destroy!の正当性が不明になる。そうなるときちんとエラー内容を確認できなくなる。
というコードレビューをもらった。
正当性が不明??なんでエラー内容が確認できない??っていう状況。
とある人のブログで、
saveとsave!の違いは、保存出来なかった場合の振る舞いにあります。
・saveメソッドは、保存できない場合falseを返します。
・save!メソッドは、保存できない場合例外ActiveRecord::RecordInvalidが発生します。
ということらしい。知らなかった。
質問したら、save!のほうが失敗した時にブラックボックス化になるらしい。
なので、
save! -> save
destory! -> destroy
に変更した。