🎉

Railsのfindとfind_byメソッドの違い

2023/08/22に公開

findメソッド

findメソッドは、主に主キー(id)を基にレコードを検索するためのメソッドです。

使用方法
ユーザーモデルからレコードを検索する場合に使用できる。
user = User.find(1)
上記のコードはidが1のUserモデルのレコードを検索する。
もし該当のレコードが存在しない場合 → ActiveRecord::RecordNotFound例外が発生。

find_byメソッド

任意の属性(カラム名)を基にレコードを検索する。
使用方法
user = User.find_by(email: "example@example.com")
emailがexample@example.comのUserモデルのレコードを検索。
該当のレコードが存在しない場合 → nilを返します。

どのような場合に役立つか?
コントローラのshowアクションなど。
URLのパラメータ以外の属性でレコードを検索する場面でfind_byが役立つ。

まとめ
findは主に「id」を基にレコードを検索する場合に使用する。
find_byは「任意の属性(カラム)」を基にレコードを検索する場合に使用する。

Discussion