コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

ActiveRecordの find , find_by , where の使い分け

初学者にいい感じに説明できなかったので、SQLの概念抜きにしてまとめてみる

用途ベースの使い分け方

いずれもModel(ActiveRecord)からデータを取得するために使うものだが まずは大きく2つのうちどちらかになるかを考える

  1. 結果が単一になるものを取りたい
  2. 結果が複数になるものを取りたい

Aの場合、どのように絞り込みたいかによって代わり

  1. サロゲートキーであるID
  2. 複合した条件

の2つで分かれる。この結果を持って

  • A1が find
  • A2が find_by
  • Bが where

といういずれかの選択になる。

また、whereに関しては直接モデルのクラスではなく ActiveRecord::Relation になることも気をつけなければいけない

参考リンク