LoginSignup
0
0

More than 1 year has passed since last update.

【Rails】find,find_by,where それぞれのメソッドの違いと使い方

Posted at

My Profile

プログラミング学習歴②ヶ月目のアカウントです!
プログラミングスクールで学んだ内容や自分が躓いた箇所等のアウトプットの為に発信しています。
また、プログラミング初学者の方にわかりやすく、簡潔にまとめて情報共有できればと考えています。
もし、投稿した記事の中に誤り等ございましたら、コメント欄でご教授いただけると幸いです。 

対象者

・findメソッドとfind_byメソッドとwhereメソッドの違いを知りたい方
・違いを理解した上で運用していきたい方

目的

それぞれ3つの違いを理解した上で使用できること

実際の手順と実例

1.find

findメソッド

モデル名.find(主キー)

<使い方>

◎ 前提:Bookモデルに格納されているデータを取り出したい

class BooksController < ApplicationController
:
:
 def show 
    @book = Book.find(params[:id])
 end
:

:
end
  • id = 1,2,3,,,,とひとりずつのIDを取得できる

2.find_by

  • 主キー(id)以外のカラムを指定しても見つかったレコードを返せる
  • 数字だけでなく文字(id)以外も記述可能
  • 検索になかった場合nilで返す
モデル名.find_by(任意のカラム名: 格納されている値)

◎ 前提:Bookモデルに格納されているデータを取り出したい

  • titleカラムに「hello」で投稿されたレコードを取得したい
Book.find_by(title: "hello")
  • bodyカラムに「world」で投稿されたレコードを取得したい
Book.find_by(body: "world")
  • titleカラムに「hello」,bodyカラムに「world」で投稿されたレコードを取得したい
Book.find_by(title: "hello",body: “world”)

3.where

  • where()の()内は数字(id)でも文字(id以外)も可能
  • 該当する複数レコードを取得することができる
  • 検索で見つからなかった場合、空の配列を返す
モデル名.where(任意のカラム名: 格納されている値)

◎ 前提:Bookモデルに格納されているデータを取り出したい

  • titleカラムに「hello」で投稿された全レコードを取得したい場合
Book.where(title: "hello")
  • bodyカラムに「world」で投稿された全レコードを取得したい場合
Book.where(body: "world")
  • titleカラムに「hello」、bodyカラムに「world」で投稿された全レコードを取得したい場合
Book.where(title: "hello",body: "world")

Railsのコントローラー内で使って定義して使う!!

0
0
0

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
0
0