@ranking_users = User.find(Answer.group(:user_id).order('count(user_id) desc').limit(3).pluck(:user_id))
view
1<ul class="list-group"> 2 <% @ranking_users.each do |ranking_user| %> 3 <a href="/user/<%= ranking_user.id %>"> 4 <li class="list-group-item non-left"><%= ranking_user.name %></li> 5 </a> 6 <% end %> 7</ul>
上記のコードでランキングを作成しようとしています。
https://qiita.com/MitsuguSueyoshi/items/18fa5e49a27e727f00b4
この記事を参考にしており、コードの内容は
Like.group(:note_id)#まず、記事の番号(note_id)が同じものにグループを分ける order('count(note_id) desc')#それを、番号の多い順に並び替える limit(3)#表示する最大数を3個に指定する pluck(:note_id)#そして最後に:note_idカラムのみを数字で取り出すように指定。
これを参考にしています。ただUserを物理削除しており、検索にヒットしない場合があります。そのため
Couldn't find all Users with 'id': (10, 11, 1) (found 2 results, but was looking for 3)
こういったエラーが出ます。
fondだとnilの場合エラーになるのでfind_by_idかなと思ったのですがエラーが出てしまいます。このような検索対象ヒットなしがある場合どうやって配列をとってくるのがいいでしょうか?
find_by(id: [1, 2, 3...]) で検索した場合に変化は見られますか? : https://guides.rubyonrails.org/active_record_querying.html#find-by