LoginSignup
0
0

【Rails】findとWhereの違い

Posted at

findとWhere

Ruby on Railsのfindとwhereは、Active Recordを使ってデータベースからデータを検索する際に使用されるメソッドだが、それぞれに違いがある。

find

  1. findメソッドは主に主キー(通常はid)を使って検索する。
  2. findメソッドは一致するレコードが見つかると、そのレコードのインスタンスを返す。
  3. 一致するレコードが見つからない場合、ActiveRecord::RecordNotFoundエラーが発生。
    このエラーは通常、404エラーページを表示するために使用される。
    例:
user = User.find(1) # idが1のUserを検索

where

  1. whereメソッドは、検索条件を指定してデータを検索する。
    この条件はハッシュ、配列、または文字列で指定できる。
  2. whereメソッドは、一致するすべてのレコードのコレクションを返す。
    このコレクションは、ActiveRecord::Relationオブジェクトとして返される。
    これにより、チェーン可能なクエリが可能になる。
  3. 一致するレコードが見つからなくても、whereメソッドは空のコレクションを返し、エラーは発生しない。
users = User.where(name: 'John') # nameが'John'のすべてのUserを検索

まとめ

findは主キーを使った検索で一意のレコードを返し、見つからない場合にはエラーが発生する。
一方、whereは検索条件を指定して複数のレコードを返し、見つからなくてもエラーは発生しない。
また、whereはクエリをチェーンして、より複雑な検索を行うことができる。

0
0
1

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