1
5

More than 3 years have passed since last update.

findとfind_byの違い

Posted at

両者の違い

find
-検索条件として指定できるのは『id』のみ
-データを複数取得できる
-検索結果が無い場合は例外を発生させて処理を中断
find_by
-検索時に複数の条件を指定できる。また、『id』以外ののカラムでも検索できる
-取得できるデータは最初にマッチした1件のみ
-検索結果が無い場合nilを返すため処理を中断されない

使い方(find)

基本形はモデル名にfindを繋げて引数を指定。
それによって該当するモデルのテーブルからデータを検索できる。

モデル名.find(引数)

指定できる引数は
『数値型』、『文字列の数字』、『数字のリスト』、『数字の配列』
該当する『id』のデータが見つからない場合は例外(RecordNotFound)が発生する

【例】Userモデルからidが1のデータを返す


User.find(1)

【例】Userモデルからidが1,3,5のデータを配列で返す


User.find(1, 3, 5)

使い方(find_by)

モデル名に引数を繋げて条件を1つ以上指定する。
検索できる条件は『カラム名』、『検索条件』
データが見つからない場合nilを返す。

【例】Userモデルからnameカラムが"佐藤"とマッチした最初のデータを取得


User.find_by(name: "佐藤")

【例】Userモデルからnameカラムが"佐藤"で且つadminカラム(管理者)がtrueの最初のデータを取得


User.find_by(name: "佐藤", admin: true)

【例】Userテーブルから作成日が1週間以内のデータを1件取得


User.find_by("created_at > ?", 1.weeks.ago)
1
5
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
1
5