質問編集履歴

1

試してみたことを追記しました

2017/07/07 07:22

投稿

riamk
riamk

スコア47

test CHANGED
File without changes
test CHANGED
@@ -60,8 +60,190 @@
60
60
 
61
61
 
62
62
 
63
+ 追記で自分で整理しながらできる部分までやってみましたが、どうしてもここから先に進めずにいるので、アドバイスなど頂けると嬉しいです。
64
+
63
65
 
64
66
 
65
67
  ###該当のソースコード
66
68
 
67
69
  どこのコードを記述したらいいか分からなかったので、必要なコードがあれば追記しますので、その際はお手数ですが修正依頼をお願いいたします。
70
+
71
+
72
+
73
+ ###試してみたこと
74
+
75
+ 自分でできるところまで整理して試みてみました
76
+
77
+
78
+
79
+ (1).自分の商品(item)を取得してみる
80
+
81
+
82
+
83
+ ```ruby
84
+
85
+ <%= current_user.try(:items) %>
86
+
87
+ # 実行結果
88
+
89
+ <Item::ActiveRecord_Associations_CollectionProxy:0x007f8df339e008>
90
+
91
+ ```
92
+
93
+
94
+
95
+
96
+
97
+ (2).`target` で `<Item::ActiveRecord_Associations_CollectionProxy:0x007f8df339e008>` の中身を取り出してみる
98
+
99
+
100
+
101
+ ```ruby
102
+
103
+ <%= current_user.try(:items).target %>
104
+
105
+ # 実行結果
106
+
107
+ []
108
+
109
+
110
+
111
+ #中身が見えない(eachとかで1つずつ取り出さないとダメみたい)
112
+
113
+ ```
114
+
115
+
116
+
117
+
118
+
119
+ (3).`each`で取り出してみる
120
+
121
+
122
+
123
+ ```ruby
124
+
125
+ <% current_user.try(:items).each do |item| %>
126
+
127
+ <%= item %>
128
+
129
+ <% end %>
130
+
131
+ # 実行結果
132
+
133
+ <Item:0x007fdbe337d220>
134
+
135
+ <Item:0x007fdbe337d040>
136
+
137
+ ```
138
+
139
+
140
+
141
+ (4).自分の商品(item)に関連するレビューを取得してみる
142
+
143
+ まずは自分の商品を `@my_items` に入れて、そこから `reviews`を取得してみる
144
+
145
+
146
+
147
+ ```ruby
148
+
149
+ @my_items = current_user.try(:items).each do |my_item|
150
+
151
+
152
+
153
+ <%= @my_items.reviews %>
154
+
155
+ # 実行結果
156
+
157
+ undefined method `reviews' (エラーになる)
158
+
159
+ ```
160
+
161
+
162
+
163
+ 複数の自分の商品に対して、レビュー を呼び出すことはできない?
164
+
165
+ なので `each` で 複数の自分の商品 に対するレビューを取り出してみる
166
+
167
+
168
+
169
+ ```ruby
170
+
171
+ <% @my_items.each do |my_item| %>
172
+
173
+ <% my_item.reviews.each do |review| %>
174
+
175
+ <%= my_item.reviews %>
176
+
177
+ <% end %>
178
+
179
+ <% end %>
180
+
181
+
182
+
183
+ # 実行結果
184
+
185
+ <Review::ActiveRecord_Associations_CollectionProxy:0x007fdbe2c48c20>
186
+
187
+ <Review::ActiveRecord_Associations_CollectionProxy:0x007fdbe2c48c20>
188
+
189
+ <Review::ActiveRecord_Associations_CollectionProxy:0x007fdbe2c48c20>
190
+
191
+
192
+
193
+ <Review::ActiveRecord_Associations_CollectionProxy:0x007fdbe320ae88>
194
+
195
+ <Review::ActiveRecord_Associations_CollectionProxy:0x007fdbe320ae88>
196
+
197
+ <Review::ActiveRecord_Associations_CollectionProxy:0x007fdbe320ae88>
198
+
199
+
200
+
201
+ #一応、複数の自分の商品に対する、 複数のレビューを取得することができた
202
+
203
+ ```
204
+
205
+
206
+
207
+ (5).レビューを取り出すことができたので、次はレビューの評価カラムを`pluck`を使って取り出してみる
208
+
209
+
210
+
211
+ ```ruby
212
+
213
+ <% @my_items.each do |my_item| %>
214
+
215
+ <%= my_item.reviews.pluck(:evaluation).each do |review| %>
216
+
217
+ <% end %>
218
+
219
+ <% end %>
220
+
221
+
222
+
223
+ # 実行結果
224
+
225
+ [nil, 5, 2] [nil, 5, 5]
226
+
227
+ ```
228
+
229
+
230
+
231
+ これでユーザーが所有する商品(item)のレビューの評価を取得することできました。
232
+
233
+ あとは、取得した `[nil, 5, 2] [nil, 5, 5]` の平均値を取得したいのですが、その方法が分かりません。
234
+
235
+
236
+
237
+ あと、平均値を求める時に、`nil`は除外して平均値を求めたいです。
238
+
239
+
240
+
241
+ どのようにしたらいいかアドバイスを頂きたいです。
242
+
243
+
244
+
245
+
246
+
247
+ ###補足
248
+
249
+ 色々と調べながらやってみて、試してみたものが誤っていることもあるかと思いますが、何卒よろしくお願いします。