目次
findについて
find_byについて
whereについて
まとめ
findメソッドとは
イメージは、「主キー(id)を指定して、見つかった1レコードを返す」です。
【特徴】
1.find()の()内に記述できるのは数値(id)のみ
2.idは主キーなので、1レコードのみ取得
3.検索に該当するデータがなかった場合、ActiveRecord::RecordNotFoundを返す
【書き方】
モデル名.find(主キー)
【例】
①id=1のみ取得したい場合(モデルはListの場合)
List.find(1)
②URLのidを取得したい場合
List.find(params[:id])
find_byメソッドとは
イメージは、「主キー(id)以外のカラムを指定しても、見つかった1レコードを返せる」です。
【特徴】
1.find_by()の()内に記述できるのは、数値(id)だけでなく、文字(id以外のカラム)も可能
2.id以外のカラムも指定できるので、複数のレコードが見つかる場合もありますが、その時は、一番最初に見つかったレコード1件を取得
3.検索に該当するデータがなかった場合、nilを返す
【書き方】
モデル名.find_by(任意のカラム名: 格納されている値)
【例】
①titleカラムに「ruby」で投稿されたレコードを取得したい場合(モデルはList)
List.find_by(title:"ruby")
②bodyカラムに「rails」で投稿されたレコードを取得したい場合
List.find_by(body:"rails")
③titleカラムに「ruby」、bodyカラムに「rails」で投稿されたレコードを取得したい場合
List.find_by(title:"ruby",body:"rails")
whereメソッドとは
主なイメージは、「主キー(id)以外のカラムも指定できる、且つ、複数のレコードも返せる」です。
【特徴】
1.where()の()内に記述できるのは、数値(id)だけでなく、文字(id以外のカラム)も可能
2.該当する複数のレコードを取得
3.検索に該当するデータがなかった場合、空の配列を返す
【書き方】
モデル名.where(任意のカラム名: 格納されている値)
【例】
①titleカラムに「ruby」で投稿された全レコードを取得したい場合(モデルはList)
List.where(title:"ruby")
②bodyカラムに「rails」で投稿された全レコードを取得したい場合
List.where(body:"rails")
③titleカラムに「ruby」、bodyカラムに「rails」で投稿された全レコードを取得したい場合
List.where(title:"ruby",body:"rails")
まとめ
今回はデータの取得方法としてよく使われる3パターンを整理しました!
それぞれに特徴があるので、適宜、必要な場面での使い分けが大切だと思いました!
これからも理解を深め、しっかり使い分けできるようになりたいです、、、!