@teachers = User.joins(:students).where("student_id IS NOT NULL")
上記は機能しますが、以下は機能しません。
@teachers = User.includes(:students).where("student_id IS NOT NULL")
私が理解している限り、結合とインクルードはどちらも同じ結果をもたらし、パフォーマンスが異なるはずです。これによるincludesと、Modelによって呼び出されたオブジェクトの関連レコードをロードするために使用します。ここでjoins、2つのテーブルを単純に追加します。を使用includesすると、を防ぐこともできますN+1 queries。
最初の質問:コードの2行目が機能しないのはなぜですか?
2番目の質問:includes上記のような場合、誰かが常に使用する必要がありますか?