例外処理書かないならバイつけようぜバイ
今年の頭か去年の頭か時期は忘れたもののrailsのコードでデータの検索時にfindを書いているパターンをよく見ました。
なんか違うんだっけ?
基本的な話ですが、findとfind_byではいろいろと違うことがあります。
検索の条件に渡せるものがfindだとIDだけなのに対してfind_byになると他のカラムで行けたり、取得結果としてfindだと複数取得できるけどfind_byだったらマッチした最初の1件だったり・・・
そして一番の違いがマッチするデータがなかった時の挙動です。
find_byではnilが返ってくるのに対してfindだと例外(ActiveRecord::RecordNotFound)を発生させて処理が中断します。
例外処理書くならfindでもいいんだけどね
データがなかった場合は・・・するみたいな処理の時はfindで例外処理書いてあげればデータ取得→有無判定→処理の流れで有無判定をなくせるのですっきりするものの指摘したときはそういう処理だったわけでもなかったのでfind_byでええやん、になりましたとさ
今はもう言うことなくなってよかった
最近はもういう機会もなくなったものの、懐かしいおもひでとして覚えておきたい