findとfind_byの違い

findとfind_byの違い
[findメソッド]

 @board = Board.find(1)
 ``` 
上記のように[find]メソッドは、idを条件にした時にのみ使える。(該当するidのものを全て取得する。) 
また、該当するものが見つからない場合は例外(RecordNotFound)が発生する。 
下記のようにリストでidを指定して、複数検索をして配列を得ることもできる。
 ``` 
@board = Board.find(1, 2, 3, 4) 


[find_byメソッド]

@board = Board.find_by(title: "rails学習") 

上記のように[find_by]メソッドは、特定のカラムを指定して使える。(特定の条件に該当する最初のデータを取得する。取得できるデータは、1件のみ。同じデータが複数ある場合は、順序などが重要になるので[order]メソッドなどを使って工夫する。) 複数のデータを特定の条件で取得したい場合は、[where]メソッドを使う。 また、該当するものが見つからない場合はfalseを返す。


※ポイント
[find]も[find_by]もテーブルから特定の条件のデータを取得するカラムなので、下記のようにレシーバがモデル以外でも使える。

@board = current_user.boards.find(params[:id]) 


参考記事:
しっかり使い分け!Railsでのfind, find_byの違い、使い方 | 侍エンジニアブログ https://udemy.benesse.co.jp/development/system/rails-find.html ActiveRecord::RecordNotFoundのエラーメッセージを翻訳する - Qiita