0

画像とコメントの間には1対多の関係があります。画像を返したいのですが、その特定の画像の最新の 5 つの (プライマリ ID で並べ替えられた) コメントと共に画像を返します。

これは ActiveRecord で可能ですか? Rubyがそれを検出/配列に変換するような方法で5つのコメントを構築するにはどうすればよいですか?

PSこれを1つのクエリで実行したい。画像をクエリして、各画像に対して 5 つのコメントを取得できることはわかっていますが、それは非効率的です。これを一気にやりたい。

これは単純な 1 対多の関係であるため、データベース スキーマは提供しません。コメント テーブルには、image_id という列があります。

ありがとう

4

1 に答える 1

0

いいえ、あなたが説明していることを ActiveRecord で行う方法はありません。実際、SQL でこれを行う良い方法はありません。多くの自己結合を含む巨大なクエリを作成する以外にはありません。ActiveRecord は SQL クエリを生成してデータを取得するため、SQL と同じ制限があります。

最も簡単な方法は、各画像のすべてのコメントを取得してから、それぞれのコメントを 5 つ選択することです。画像ごとのコメント数が多く、すべてを取得するとパフォーマンス目標を達成できなくなる場合は、さまざまな解決策が考えられます。詳細を投稿すると、誰かが適切な解決策を提案できるかもしれません。(たとえば、どの DB を使用していますか? 画像はいくつありますか? 画像ごとに平均してコメントはいくつありますか? これはどれくらい速くなければなりませんか?)

于 2013-08-03T11:50:41.427 に答える