初学者にいい感じに説明できなかったので、SQLの概念抜きにしてまとめてみる
用途ベースの使い分け方
いずれもModel(ActiveRecord)からデータを取得するために使うものだが まずは大きく2つのうちどちらかになるかを考える
- 結果が単一になるものを取りたい
- 結果が複数になるものを取りたい
Aの場合、どのように絞り込みたいかによって代わり
- サロゲートキーであるID
- 複合した条件
の2つで分かれる。この結果を持って
- A1が
find
- A2が
find_by
- Bが
where
といういずれかの選択になる。
また、whereに関しては直接モデルのクラスではなく ActiveRecord::Relation
になることも気をつけなければいけない