teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

2017/04/15 08:54

投稿

moke
moke

スコア2241

answer CHANGED
@@ -8,7 +8,7 @@
8
8
  end
9
9
 
10
10
  ```ruby
11
- <% @comic_ranking.each do |comic_id|%>
11
+ <% @comic_ranking.each do |comic|%>
12
12
  <tr>
13
13
  <td><%= image_tag comic.front_cover.to_s %></td>
14
14
  <td><%= comic.title %></td>

1

2017/04/15 08:54

投稿

moke
moke

スコア2241

answer CHANGED
@@ -3,14 +3,16 @@
3
3
  comicだったものをlikeに置き換えたところでそのまま動くわけがありません
4
4
  そもそも@comic_rankingは[comic_id,like_count]という配列の配列であって
5
5
  comicで表されていたActiveRecordとは全然違うものです。
6
+ def index
7
+ @comic_ranking=Comic.joins(:likes).references(:likes).group(:comic_id).order("count(likes.id dsec"))
8
+ end
9
+
6
10
  ```ruby
7
- <% @comic_ranking.each do |comic_id,like_count| %>
11
+ <% @comic_ranking.each do |comic_id|%>
8
- <% comic=Comic.find(comic_id) %>
9
12
  <tr>
10
13
  <td><%= image_tag comic.front_cover.to_s %></td>
11
14
  <td><%= comic.title %></td>
12
15
  <td><%= comic.author %></td>
13
- <td><%= like_count %></td>
14
16
  </tr>
15
17
  <% end %>
16
18
  <table>
@@ -19,11 +21,10 @@
19
21
  <th>作品表紙</th>
20
22
  <th>作品タイトル</th>
21
23
  <th>作者</th>
22
- <th>いいね数</th>
23
24
  </tr>
24
25
  </thead>
25
26
  ```
26
27
  とりあえずこれで、エラーは出ませんが、n+1問題が発生してコミックが増えた時、非常に重くなるでしょう。
27
28
 
28
- サブクエリを利用てソートするのが正解なのですが…。
29
+ N+1問題に対応ました
29
- もし必要ないってくだされば、暇ときにも書き込みま
30
+ 携帯かの更新見苦し買ったらすみません