nil を返します。# Userモデルでemailが"example@example.com"の最初のユーザーを探す
user = User.find_by(email: "example@example.com")
find_byは複数のフィールドに対する条件を同時に指定することができます。# 名前が"John"で、都市が"Seoul"の最初のユーザーを探す
user = User.find_by(name: "John", city: "Seoul")
find_by vs findfindメソッドは主にIDでレコードを探す時に使用され、該当IDのレコードが存在しない場合はActiveRecord::RecordNotFound例外が発生します。find_byは指定された条件を満たす最初のレコードを返し、レコードがない場合はnilを返します。=>これは例外処理が不要な時に便利です。Railsは特定のフィールドに対して動的検索メソッドもサポートしています。
これはfind_byに比べてより簡潔である可能性がありますが、多くの条件を同時に使用することはできません。
# find_by_emailメソッドを使用してユーザーを探す
user = User.find_by_email("example@example.com")
find_byを使用する際には、返り値がnilになる可能性があることを常に考慮する必要があります。=>これは条件に合うレコードがデータベースにない場合に発生する可能性があります。find_byを使用する前に適切なインデックスがあるかどうかを確認する。=>これはデータベースのパフォーマンスを保証するためです。