私はacts_as_commentable_with_threadinggemを使用して、ユーザーが私のブログ投稿にコメントできるようにしています。
私が今やりたいのは、コメントされた投稿のほとんどを表示することですが、それらをクエリする方法がわかりません(そして、私が知る限り、gemはそのような方法を提供していません)。そのようなことを達成するためのヒントやアイデアを教えていただけますか?
私はacts_as_commentable_with_threadinggemを使用して、ユーザーが私のブログ投稿にコメントできるようにしています。
私が今やりたいのは、コメントされた投稿のほとんどを表示することですが、それらをクエリする方法がわかりません(そして、私が知る限り、gemはそのような方法を提供していません)。そのようなことを達成するためのヒントやアイデアを教えていただけますか?
これは、最も多くのアイテムを投稿したトップユーザーを返すために使用するメソッドです。それはあなたの問題であなたを助けるかもしれません。これはサイドナビゲーションバーの一部であり、Webアプリケーションのすべてのページで使用されるため、アプリケーションヘルパーに配置しました。
def top_posters
User.all(:select => "users.*, COUNT(user_id) as post_count",
:joins => "LEFT JOIN posts AS posts ON posts.user_id = users.id",
:group => "posts.user_id",
:order => "post_count DESC",
:limit => 5)
end
私の見解では、私は
<% top = top_posters() %>
<% for t in top %>
<li><%= link_to t.username, user_path(t) %>
(<%= t.posts.public_posts.count %>)</li>
<% end %>
Rails4+の場合
次のようなものを使用する必要があります。
Article.select("articles.*, COUNT(commentable_id) as comments_count")
.joins("LEFT JOIN comments AS comments ON comments.commentable_id = articles.id")
.group("comments.commentable_id")
.order("comments_count DESC")
.where("commentable_type = 'Article'")
.limit(5)