maco's life

主にエンジニアリングと読書について書いていきます。

ActiveRecordでRowが見つからなかったらnilを返したい

ActiveRecordでfindで検索してRowが見つかった時にActiveRecord::ResultNotFoundがでて自分はnilを期待していたのに(`ェ´)ピャーってなってドキュメントよんだのでメモ。

find

findを使った時は、idを検索条件に入れて使う。またはprimary_keyでも大丈夫そう。Rowが見つからなかった時は、ResultNotFoundのエラーが返る

ActiveRecord:find

find_by(*)

こちらは検索条件に縛りはないです。Rowが見つからない時はnilが返る

ActiveRecord:find_by

find_by!(*)

これはfind_byと似てますね。検索条件等の制限はfind_byと同じだけどこちらをつかうと、Rowがなかった時にnilじゃなくてResultNotFoundを起こせる。

ActiveRecord:find_by!

とりあえず忘れないようにメモ。 色々使い方あるんだなーと。