1
動的条件を使用して熱心な負荷を実行することは可能ですか?具体的には:それはいうだけ:items
よりも全体のクエリにwhere
条件が適用されますが、達成するための方法があるようダイナミック条件付き熱負荷
u_id = params[:user_id]
Container.includes(:items).where("items.user_id =?", u_id)
これは明らかに私に特定のuser_id
の項目だけでなく、すべてのコンテナを与えるものではありませんこれはARelを使用して、またはカスタムSQLクエリが必要ですか?
これにより、スコープの理解が深まります。現在、クエリはアイテムを含むコンテナのみを返します。与えられたユーザーのために熱心な負荷アイテムを作成し、アイテムが含まれていなくてもすべてのコンテナを取得できますか? – Stefan
コンテナにuser_idがあった場合は比較的簡単です。 include(:items).scoped'これは、指定されたユーザのすべてのコンテナを選択し、次に、選択されたコンテナに関連するアイテムを含めることになります。あなたがコンテナに 'user_id'を持っていなかったなら、私は私の頭の上に答えを持っていません。私が何かを見つけたら、私はそれを投稿します。 – nmott
助けてくれてありがとう。私はデザインを修正しようとします、おそらくそれが私の難しさの原因です。現在、すべての 'Users'はすべての' Containers'を取得できますが、それらの 'Items'はそれらのコンテナ内で取得できます。私はそれを少し論理的に見ていますが、それは楽しいN + 1クエリーの問題を引き起こしています。 – Stefan