レール4/5では、アイテムのリストを表示しようとしています。検索ユーザーがこれらのアイテムそれを私の索引のどこかに表示する。これは、投稿のフィードを表示して、私が既に投稿を好きだったかどうかを確認するソーシャルネットワーク、またはアイテムのリストを表示して、アイテムをリストに保存したかどうかを確認できるようにします。アイテムのインデックスを作成するときに、ユーザーが好きなものや星を付けたものを表示する方法
単純な例として、User
、Post
、LikedPost
の結合モデルがあるとします。ユーザーは投稿を作成し、他のユーザーは投稿を好きにすることができます。ユーザーとして、投稿を見て、その記事の1つが好きかどうかを確認することができます。
@posts = Post.includes(:liked_posts)
.where('liked_posts.user_id = ?', current_user.id)
.references(:liked_posts)
をしかし、それは実際にのみ私に私が言ってきた記事を表示するクエリを実行します。
理論的には、このようなものが動作するはずです。他の投稿は除外されます。
私は奇妙なことに、オンラインで関連するものを見つけるのに苦労しています。私が見つけることができるのは、基本的に「あなたはSQLを書く必要があります。任意のヒント/アドバイス?
ありがとうございます!それはかなり単純ですが、私はそれがn + 1のクエリの問題を引き起こすと信じています。トラフィックが少なくなると、それは良いトレードオフになるかもしれません。 –
ええ確かに、それは問い合わせを増やすだろう - しかし、これは「最初にそれを行うと、それがボトルネックを作成した場合、それがない場合は、後でそれを最適化参照」の状況である:D –
おかげで - もちろん、それは間違いなく正しいアプローチです!私は最小限のデータベースクエリでこの問題を解決する方法を考え直しましたが、それはあまりにも複雑なコントローラアクションです。私はあなたの考えに感謝します! –