0

簡単な掲示板システムを書いています。祖先についての 1 つのことは、単一の呼び出しを使用するため、制限とオフセットを指定して呼び出すと、最上位要素の一貫したリストが返されないことです。ページネーションを処理するには、@per_page と the_offset が必要です。

だから私は現在、次のようなものを持っています:

@posts=MbPost.where('forum_id=?',params[:id]).offset(the_offset).limit(@per_page).order('updated_at desc')

ただし、オフセットと @per_page は、要素の総数ではなく、トップレベル (つまり、祖先が NULL) を反映する必要があります。

これを行う方法について何か考えはありますか?

thx事前に

4

1 に答える 1

1

単一のDBクエリでは実行できません。

理由は、たとえばページネーションが10の場合、トップレベルの投稿を10個(実際には15個の投稿)表示したいのですが、その次のページでさらに10個のトップレベルの投稿を表示すると、実際の投稿が20個表示される可能性があります。違う。

これを処理するもう1つの方法は、2つのクエリを使用することです。1つは:を含む実際のページ用でancestry is null、制限とオフセットを適用します。次に、他のクエリは、前のクエリで持っている投稿の任意のレベルの子であるすべての投稿をフェッチします。

于 2012-12-14T20:02:40.357 に答える