曖昧な理解を正せるようにまとめてみました。
この記事は基礎中の基礎なので、詳細はこちらの記事が分かりやすかったです!
【Rails】find・find_by・whereについてまとめてみた
①結論
主キー(id)のレコード(データ)を取得したい→find
id以外のカラムを検索条件としてレコードを取得したい→find_by
id以外のカラムを検索条件として、複数のレコードを取得したい場合→where
②findメソッド
主キー(id)のレコード(データ)を取得
> Quiz.find(37)
=> #<Quiz:0x00007fb1deaf03d8
 id: 37,
 question: "destroy",
 correct: "破壊",
 incorrect1: "消去",
 incorrect2: "怪獣",
 answer_description: "壊す・破壊です。",
 user_id: 2,
 created_at: Tue, 01 Jun 2021 09:14:50 UTC +00:00,
 updated_at: Tue, 01 Jun 2021 09:14:50 UTC +00:00,
 category_id: 5>
条件に当てはまるデータが無ければArgumentError(例外)が投げられる
> Quiz.find(132)
ActiveRecord::RecordNotFound: Couldn't find Quiz with 'id'=132
③find_byメソッド
主キー以外を検索条件としてレコードを取得(主キーでも可)
ただし返ってくる結果は、最初にヒットした1件のみ
> Quiz.find_by(question: "margin")
=> #<Quiz:0x00007fb1dd10eb90
 id: 47,
 question: "margin",
 correct: "余白",
 incorrect1: "マジ",
 incorrect2: "白",
 answer_description: "マージンは外側の余白です。paddingは?",
 user_id: 1,
 created_at: Thu, 03 Jun 2021 03:03:42 UTC +00:00,
 updated_at: Thu, 03 Jun 2021 03:03:42 UTC +00:00,
 category_id: 3>
複数の検索条件を指定可
> Quiz.find_by(category_id: 3, user_id: 1)
=> #<Quiz:0x00007fb1dd1f68f0
 id: 45,
 question: "background",
 correct: "背景",
 incorrect1: "後退",
 incorrect2: "地面",
 answer_description: "バックグラウンドです",
 user_id: 1,
 created_at: Thu, 03 Jun 2021 03:01:47 UTC +00:00,
 updated_at: Thu, 03 Jun 2021 03:01:47 UTC +00:00,
 category_id: 3>
条件に当てはまるデータが無ければnilが返ってくる
> Quiz.find_by(correct:"時計")
=> nil
④whereメソッド
主キー以外を検索条件として該当するレコードを全て取得
ただし配列で返ってくる点に注意
> Quiz.where(category_id: 3)
=> [#<Quiz:0x00007fb1ab4ca630
  id: 45,
  question: "background",
  correct: "背景",
  incorrect1: "後退",
  incorrect2: "地面",
  answer_description: "バックグラウンドです",
  user_id: 1,
  created_at: Thu, 03 Jun 2021 03:01:47 UTC +00:00,
  updated_at: Thu, 03 Jun 2021 03:01:47 UTC +00:00,
  category_id: 3>,
 #<Quiz:0x00007fb1ab4ca4a0
  id: 46,
  question: "border",
  correct: "境目",
  incorrect1: "ボード",
  incorrect2: "線",
  answer_description: "ボーダーの服は、境目だらけの服ですね",
  user_id: 1,
  created_at: Thu, 03 Jun 2021 03:02:42 UTC +00:00,
  updated_at: Thu, 03 Jun 2021 03:02:42 UTC +00:00,
  category_id: 3>]
条件に当てはまるデータが無ければQuiz::ActiveRecord_Relation
が返ってくる(空の配列ではない)
> Quiz.where(user_id: 15)
=> []
> Quiz.where(user_id: 15).class
=> Quiz::ActiveRecord_Relation
⑤おわりに
Quiz::ActiveRecord_Relationについての理解が0でした。
普通に空の配列だと思ってた...要勉強!