2011-01-07 6 views
1

私はモンゴイドで2つのクラスを持っています:トピック&ポスト。トピックは多くの投稿を参照します。MongoDB/Mongoid:参照した文書のIDでソート

最新の投稿が一番上になるように、投稿のIDの降順でトピックを並べ替える必要があります。

@topics = Topic.order_by(:last_message.created_at.desc) 

これは明らかに機能しません。

これを行う方法はありますか?

答えて

2

Topicで余分なフィールド 'LastMessageCreated'を作成し、各投稿の後に投稿日を保存し、トピックを 'LastMessageCreated'で注文するのがよい方法です。

+0

うん、私もそれについて考えました。 – Alex

+0

フィルタリングと順序付けと検索のために余分なフィールドを持つのが普通です。 –

0

これはいかがですか?

@topics = Topic.desc('posts.created_at') 

それとも

@topics = Topic.order_by('posts.created_at',:desc) 
+0

これは動作しません。これは翻訳されたものです:find({"topic_id" => BSON :: ObjectId( '...')}、{})。sort([]) – Alex

0

Topic.all(sort: [[:created_at, :desc]])

関連する問題