ユーザーとの多対多の「お気に入り」関係を持つドキュメントモデルがあります。検索ページにドキュメントのリストを表示するときに、各ドキュメントが現在のユーザーのお気に入りであるかどうかを表示したいと思います。私はこれを行う 2 つの方法を知っています。1 つはより効率的で、もう 1 つはよりクリーンです。効率的でクリーンになるように別の方法があるかどうか疑問に思っています。
クリーンバージョン。モデル「is_favored(user)」に、ドキュメントが特定のユーザーに好まれているかどうかを示すメソッドを用意するだけです。次に、この関数を使用して空の星または塗りつぶされた星を表示する単純なテンプレート タグを作成します。もちろん、これはドキュメントごとに異なる DB 呼び出しを行うため、効率的ではありません。しかし、ビューをまったく変更する必要がないので、これは素晴らしいことです。
効率的なバージョン。ビューで単一のデータベース クエリを実行して、お気に入りのクエリを取得し、各ドキュメントに「お気に入り」フィールドを追加します。ドキュメントを表示するすべてのビューにカスタム コードを追加する必要があり、あまり DRY ではないため、このアプローチは好きではありません。
DRYで効率的なより良いアプローチはありますか? ありがとう。