0

Railsアプリでページ付けジェム(kaminari)を使用していて、Mongoドキュメントのコレクションを並べ替えるのに苦労しています。

まず、クエリを構成します。これは、ユーザーの最新のコメントすべてに相当する1ページを取得することです。

comments = user.comments.desc(:created_at).page(params[:page])

デフォルトでは、これにより25レコードが得られます。次に、各コメントをレンダリングしますが、順序を逆にして、最新のコメントが一番下に表示されるようにします。

comments.asc(:created_at).each do |comment|
  - render the comment

ただし、comments変数でascを呼び出すと、クエリが再定義され、最新のコメントではなく、そのユーザーの最も古いコメントが表示されます。

クエリのスコープを変更するだけでなく、コレクションを取得してそのオブジェクトを並べ替えるにはどうすればよいですか?

4

1 に答える 1

2

モンゴイドクエリで to_a を呼び出すと、その時点でクエリが実行されます。

comments = user.comments.desc(:created_at).page(params[:page])
comments.to_a.reverse.each do |comment|
  - render the comment

したがって、コメントを配列に呼び出してから、配列を逆にしています

于 2011-08-17T01:31:25.247 に答える