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

質問編集履歴

2

追記を加えました

2020/09/24 05:55

投稿

ty_tech
ty_tech

スコア1

title CHANGED
File without changes
body CHANGED
@@ -50,7 +50,7 @@
50
50
  ```
51
51
 
52
52
 
53
- ### posts_controller.rb (現在考えている記述)
53
+ ### posts_controller.rb (~~現在考えている記述~~(追記2現在のコントローラを記述しています)
54
54
 
55
55
  ```
56
56
  def ranks
@@ -106,4 +106,93 @@
106
106
  ![イメージ説明](b35c54113d53e28bebc6a9a623e6e067.png)
107
107
 
108
108
 
109
+
110
+ ### 追記:1 関連テーブルを追加しました
111
+
112
+ ### schema.rb 
113
+
114
+ ```
115
+ create_table "posts", force: :cascade do |t|
116
+ t.string "fish_image"
117
+ t.string "fish_name"
118
+ t.float "catch_size"
119
+ t.float "weight"
120
+ t.string "range"
121
+ t.integer "user_id"
122
+ t.datetime "created_at", precision: 6, null: false
123
+ t.datetime "updated_at", precision: 6, null: false
124
+ t.integer "tournament_id"
125
+ end
126
+
127
+ create_table "tournaments", force: :cascade do |t|
128
+ t.date "date"
129
+ t.string "fishing_ground"
130
+ t.string "fishing_style"
131
+ t.string "condition"
132
+ t.string "fish_name"
133
+ t.string "keeper_size"
134
+ t.string "some_fish"
135
+ t.text "comment"
136
+ t.datetime "created_at", precision: 6, null: false
137
+ t.datetime "updated_at", precision: 6, null: false
138
+ t.integer "user_id"
139
+ end
140
+
141
+ create_table "users", force: :cascade do |t|
142
+ t.string "email", default: "", null: false
143
+ t.string "encrypted_password", default: "", null: false
144
+ t.string "reset_password_token"
145
+ t.datetime "reset_password_sent_at"
146
+ t.datetime "remember_created_at"
147
+ t.datetime "created_at", precision: 6, null: false
148
+ t.datetime "updated_at", precision: 6, null: false
149
+ t.string "nickname"
150
+ t.string "image"
151
+ t.string "main_field"
152
+ t.string "main_target"
153
+ t.string "max_size"
154
+ t.text "comment"
155
+ t.index ["email"], name: "index_users_on_email", unique: true
156
+ t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
157
+ end
158
+ ```
159
+
160
+
161
+ ### 追記:2 
162
+ コントローラとviewを変更したらエラーはなくなりました。
163
+
164
+
165
+ ### posts_controller.rb (現在のコントローラ)
166
+
167
+ ```
168
+ def ranks
169
+ @tournament = Tournament.find(params[:tournament_id])
170
+ @ranks = @tournament.posts.joins(:user).group("users.id", "users.nickname").order('sum_catch_size desc').sum(:catch_size)
171
+ end
172
+
173
+ ※上記で取得できた内容です → { [user_id, user_nickname] => "sum_catch_size" }
174
+ 2つデータが入っているとこんな取得の仕方です → {[2, "Aくん"]=>95.5, [1, "Bくん"]=>90.5}
175
+ ```
176
+
177
+
178
+ ### app/views/posts/ranks.html.erb
179
+ ```
180
+ <% @ranks.each.with_index(1) do |(nickname,sum_size),i| %>
181
+ </p><%= "第#{i}位 #{sum_size}cm" %></p>
182
+ <p><%= nickname[1] %></p>
183
+ <% end %>
184
+
185
+ ```
186
+
187
+ catch_sizeの合計値の大きい順に並べ変えて、「合計値」と「ユーザー名」は取得できました。
188
+ ただ、投稿されたpostのイメージ画像が含まれていません。
189
+
190
+ ### 完成イメージを貼ります
191
+ ![イメージ説明](abf22b3a2478826a4696ef9125765c06.png)
192
+
193
+ **「質問」**(追加質問になってしまい申し訳ございません。現在は以下の内容に悩んでおります)
194
+ **@ranks内に追加で投稿イメージを含めることは可能でしょうか?それとも分けて取得した方が良いでしょうか?**
195
+ **(@ranksに投稿イメージを含めたい理由:ユーザーと投稿イメージの整合性が取れるようにしたいため)**
196
+
197
+
109
198
  初歩的な内容でお恥ずかしいですが、ご教示頂きたくお願い致します。

1

不要なイメージと思ったため

2020/09/24 05:55

投稿

ty_tech
ty_tech

スコア1

title CHANGED
File without changes
body CHANGED
@@ -6,15 +6,6 @@
6
6
  ランキングを表示させる際に、Tournament_IDに対して投稿された、Postデータ(カラム名:catch_sizeの合計値)に関連しているUserデータ(カラム名:nickname, image)を表示させたいです。
7
7
 
8
8
 
9
- ### 関係性のイメージ
10
-
11
- ![イメージ説明](3c9342a411b1f36e3884545a3198e1d8.png)
12
-
13
- ### 完成イメージ
14
- ![イメージ説明](6006fb41f5fd0ff57a96814f5ceb419b.png)
15
-
16
-
17
-
18
9
  ### Postモデル
19
10
 
20
11
  ```
@@ -24,6 +15,7 @@
24
15
  end
25
16
  ```
26
17
 
18
+
27
19
  ### Userモデル
28
20
 
29
21
  ```