1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Rails] find、find_by、whereの使い分け

Posted at

目次

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パターンを整理しました!
それぞれに特徴があるので、適宜、必要な場面での使い分けが大切だと思いました!
これからも理解を深め、しっかり使い分けできるようになりたいです、、、!

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?