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

質問編集履歴

2

追加対応時のエラーを追記

2020/09/25 08:32

投稿

GenkiSugiyama
GenkiSugiyama

スコア86

title CHANGED
File without changes
body CHANGED
@@ -100,4 +100,20 @@
100
100
  </table>
101
101
  ```
102
102
 
103
- よろしくお願いいたします。
103
+ よろしくお願いいたします。
104
+
105
+ 2020/09/25 追記
106
+ 回答に記載いただいた[こちらの記事](https://qiita.com/ayies128/items/2c5596eef388ef92291b)を参考にコントローラー内の処理を変更したところ、発行されたSQL文に関するエラーが表示されました。
107
+
108
+ 【変更内容】
109
+ ```ここに言語を入力
110
+ def index
111
+ @q = User.joins(orders: :order_racket_infos).select("users.id, name, count(orders.id) as orders, sum(orders.amount) as total_amount, count(order_racket_infos.id), users.created_at, kit_shipped_date").where(del_flg: 1).where(orders: { order_completed: true }).ransack(params[:q])
112
+ @users = @q.result(distinct: true).order("users.created_at DESC")
113
+ end
114
+ ```
115
+
116
+ 【表示されたエラー】
117
+ ```ここに言語を入力
118
+ Mysql2::Error: In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'gappari_api2_development.users.id'; this is incompatible with sql_mode=only_full_group_by
119
+ ```

1

コードの修正

2020/09/25 08:32

投稿

GenkiSugiyama
GenkiSugiyama

スコア86

title CHANGED
File without changes
body CHANGED
@@ -38,7 +38,7 @@
38
38
  【users_controllerのindexメソッド】
39
39
  ```ここに言語を入力
40
40
  def index
41
- @q = User.where(del_flg: 1).includes(orders: :order_racket_infos).ransack(params[:q])
41
+ @q = User.where(del_flg: 1).includes(orders: :order_items).ransack(params[:q])
42
42
  @users = @q.result(distinct: true).order("created_at DESC")
43
43
  end
44
44
  ```
@@ -67,12 +67,12 @@
67
67
  </thead>
68
68
  <% @users.each do |user| %>
69
69
  <% orders = user.orders.where(order_completed: true) %>
70
- <% total_rackets = 0 %>
70
+ <% total_items = 0 %>
71
71
  <% amounts = 0 %>
72
72
  <% orders.each do |order| %>
73
73
  <%# 累計本数を取得 %>
74
- <% order_rackets = order.order_racket_infos.count %>
74
+ <% order_items = order.order_items.count %>
75
- <% total_rackets += order_rackets %>
75
+ <% total_items += order_items %>
76
76
  <%# 累計金額を取得 %>
77
77
  <% amounts += order.amount %>
78
78
  <% end %>
@@ -88,7 +88,7 @@
88
88
  <td class="align-middle">
89
89
  <%= orders.count %>回
90
90
  </td>
91
- <td class="align-middle"><%= total_rackets.to_s(:delimited) %>本</td>
91
+ <td class="align-middle"><%= total_items.to_s(:delimited) %>本</td>
92
92
  <td class="align-middle text-right"><%= amounts.to_s(:delimited) %>円</td>
93
93
  <td class="align-middle"><%= l user.created_at, format: :very_short %></td>
94
94
  <td class="align-middle">