【Ruby on Rails】find・find_by・whereメソッドの違い

1150 ワード

学習後のアウトプットとして記述しています。
何か間違いがありましたら、ご指摘宜しくお願い致します。

そもそもfind・find_by・whereメソッドとは?
データ取得の仕方におけるルールみたいな感じです。

def
 show @List = List.find(params[:id])
end

find
・idを指定して見つかった1件を返す
・id以外での条件で検索不可
・取得したいidの値が具体的に分かっている場合
・該当データがない場合はエラー(ActiveRecord::RecordNotFound)が返ってくる

find_by
・id以外のカラムを指定しても見つかった1件を返す
・id以外の条件での検索可能
・返ってくる結果は、最初にヒットした1件のみ
・id及びid以外の条件が分かっている場合
・該当データがない場合nilが返ってくる

where
・id以外での条件で検索可能
・該当するデータ全てが返ってくる。

返ってくる件数 id以外の条件での検索可否 該当データがない場合
find 1件 不可能 エラー※a
find_by 1件 可能 nil
where 複数 可能 空の配列

※a ActiveRecord::RecordNotFound

用途によってメソッドを使い分ける必要がある事を学びました。
まだまだ分からないメソッドが沢山あるので、学習しながら上手に使いこなせるようになりたいです。
少しでもどなたかのお役に立てたら嬉しいです。