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

質問編集履歴

3

ViewのPlayer名を出力する部分の記述を修正

2020/05/21 08:38

投稿

d0ne1s
d0ne1s

スコア32

title CHANGED
File without changes
body CHANGED
@@ -26,7 +26,7 @@
26
26
  <h2>試合一覧</h2>
27
27
  <% @games.each do |game| %>
28
28
  <div>
29
- <%= game.player.name %> <%= game.player.name %> //ここでN+1が発生
29
+   <%= Player.find(game.player1_id).name %><span>対</span><%= Player.find(game.player2_id).name %>//ここでN+1が発生
30
30
  <%= game.result %>
31
31
  </div>
32
32
  <% end %>

2

@videos取得のクエリを修正

2020/05/21 08:38

投稿

d0ne1s
d0ne1s

スコア32

title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,7 @@
18
18
  ## Controller
19
19
  ```rb
20
20
  @player = Player.find(params[:player_id])
21
- @games = Game.where(player1_id: @player.id).or(Video.where(player2_id: @player.id))
21
+ @games = Game.where(player1_id: @player.id).or(Game.where(player2_id: @player.id))
22
22
  ```
23
23
 
24
24
  ## View

1

モデルの関連づけを追記

2020/05/21 08:35

投稿

d0ne1s
d0ne1s

スコア32

title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,14 @@
38
38
 
39
39
 
40
40
  この状況でN+1問題を解決し、クエリの数を減らす手段がございましたら、アドバイスいただけると嬉しいです。
41
- どうぞよろしくお願いいたします。
41
+ どうぞよろしくお願いいたします。
42
+
43
+ ## 追記
44
+ ```model
45
+ class Player < ApplicationRecord
46
+ has_many :games
47
+ end
48
+ class Game < ApplicationRecord
49
+ belongs_to :player
50
+ end
51
+ ```