@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
上記のような場合、誰かが常に使用する必要がありますか?