find, find_by, whereの違いについて
初めまして!今回にそれぞれの違いの理解が浅かったので纏めてみました。
find
①「findメソッド」は主キーと呼ばれるidを指定した検索の仕方。
List.find(params[:id])
id以外のカラムを指定してデータを取得したい場合もあります。
そのような場合には「findメソッド」では解決できないので、別の「find_byメソッド」を使ってデータを取得しなければいけません。
find_by
主なイメージは、「主キー(id)以外のカラムを指定しても、見つかった1レコードを返せる」。
List.find_by(title: "ruby",body: "rails")
1.find_by()の()内に記述できるのは、数値(id)だけでなく、文字(id以外のカラム)も可能
2.id以外のカラムも指定できるので、複数のレコードが見つかる場合もありますが、その時は、一番最初に見つかったレコード1件を取得
3.検索に該当するデータがなかった場合、nilを返す
where
主なイメージは、「主キー(id)以外のカラムも指定できる、且つ、複数のレコードも返せる」
List.where(title: "ruby",body: "rails")
1.where()の()内に記述できるのは、数値(id)だけでなく、文字(id以外のカラム)も可能
2.該当する複数のレコードを取得
3.検索に該当するデータがなかった場合、空の配列を返す
以上、find, find_by, whereの違いについてでした