🐥
【Ruby on Rails】find・find_by・whereメソッドの違い
学習後のアウトプットとして記述しています。
何か間違いがありましたら、ご指摘宜しくお願い致します。
そもそもfind・find_by・whereメソッドとは?
データ取得の仕方におけるルールみたいな感じです。
def
show @List = List.find(params[:id])
end
find
・idを指定して見つかった1件を返す
・id以外での条件で検索不可
・取得したいidの値が具体的に分かっている場合
・該当データがない場合はエラー(ActiveRecord::RecordNotFound)が返ってくる
find_by
・id以外のカラムを指定しても見つかった1件を返す
・id以外の条件での検索可能
・返ってくる結果は、最初にヒットした1件のみ
・id及びid以外の条件が分かっている場合
・該当データがない場合nilが返ってくる
where
・id以外での条件で検索可能
・該当するデータ全てが返ってくる。
返ってくる件数 | id以外の条件での検索可否 | 該当データがない場合 | |
---|---|---|---|
find | 1件 | 不可能 | エラー※a |
find_by | 1件 | 可能 | nil |
where | 複数 | 可能 | 空の配列 |
※a ActiveRecord::RecordNotFound
用途によってメソッドを使い分ける必要がある事を学びました。
まだまだ分からないメソッドが沢山あるので、学習しながら上手に使いこなせるようになりたいです。
少しでもどなたかのお役に立てたら嬉しいです。
Discussion