🐢

Railsのfind_or_create_by!の動きを視覚化する

に公開

自分用。毎回忘れるので書いた。

全体像

ポイント

find => なければ create だけど、createで競合(NotUnique)が発生したら、findにフォールバックするところが特徴的。フォールバックしてさらにNotUniqueだったら、NotUniqueをraiseする。

参考資料

https://edgeapi.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21

Discussion