関連からの値を持つコレクションを注文したいと思います。
例:
次のような投稿の複数の関連付けを取得しました。
- コメント
- 評価
- アタッチメント
次のようなこの関連付けを通じて投稿を注文するにはどうすればよいですか:
- order_by most_commented
- order_by most_rated
- order_by most_associations ....
ありがとうございました。
関連からの値を持つコレクションを注文したいと思います。
例:
次のような投稿の複数の関連付けを取得しました。
- コメント
- 評価
- アタッチメント
次のようなこの関連付けを通じて投稿を注文するにはどうすればよいですか:
- order_by most_commented
- order_by most_rated
- order_by most_associations ....
ありがとうございました。
これで質問に答えられます(^^)
Mongoidバージョン 3.1では、アクティブ レコード機能「counter_cache」が使用可能でした。たとえば、参照されたコメントを含む投稿を取得しました。
class Post
include Mongoid::Document
field :body, type: String
has_many :comments
end
class Comment
include Mongoid::Document
field :body, type: String
belongs_to :post, counter_cache: true
end
この場合、すべての投稿インスタンスは、投稿で参照されるコメントの数を含む comments_count フィールドを取得します。
これで、comments_count フィールドを使用して投稿を並べ替えることができます。このフィールドは、少なくとも 1 つのコメントが存在する場合にのみ使用できることに注意してください。または、モデルのデフォルト値を使用して、comments_count フィールドを明示的に設定します。