4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

##!の有無の違いは?
create!save! → レコードの作成・保存に失敗 → 例外を発生させる
createsave → レコードの作成・保存に失敗 → nilを返す

##なぜ、例外を発生させる?
RailsのTransactionにおいて、ロールバックが発火するには「例外」が必要であるから。

例えば、Railsでは #update_attributeは例外を発火せずに、falseに返すとなる。そのため、#update_attributeを使うには、結果を見て、例外をスローする必要がある。Railsではびっくりマーク!がついているメソッドは、失敗したら例外をスローすると意図するので、transactionを使うときは、saveではなくsave!、destroyではなくdestroy!を使うべきでしょう。

参考記事
RailsのTransactionの使い方:https://qiita.com/huydx/items/d946970d130b7dabe7ec
Railsで感嘆符!を理解しよう(save, save!):https://qiita.com/ozin/items/5968971c9d2b3ab0a84d

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?