質問編集履歴
1
まだ足りないかもしれないですが、修正致しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,9 +2,11 @@
|
|
2
2
|
|
3
3
|
railsで練習としてECサイトを作っている初心者です。
|
4
4
|
その中で販売数に応じたランキング機能を実装したいと思っています。
|
5
|
+
order_itemsテーブルのquantity(販売数)が多い順にItemデータを取得したいです。
|
5
6
|
|
6
|
-
|
7
|
+
現状はitemコントローラindexアクションにてItemデータの取得はできていますが、
|
7
|
-
|
8
|
+
ItemのPK(id)の昇順でデータ取得されています。
|
9
|
+
|
8
10
|
初質問で不手際もあるかと思いますが、何卒よろしくお願い致します。
|
9
11
|
|
10
12
|
```table
|
@@ -31,12 +33,13 @@
|
|
31
33
|
### 発生している問題・エラーメッセージ
|
32
34
|
|
33
35
|
```
|
34
|
-
|
36
|
+
Itemデータを取得はできるが、ItemのPK(id)の昇順でデータ取得されている。
|
37
|
+
Itemデータの取得をOrder_itemのquantityが多い順に(降順)取得したいです。
|
35
38
|
```
|
36
39
|
|
37
40
|
### 該当のソースコード
|
38
41
|
|
39
|
-
```
|
42
|
+
```Itemcontroller
|
40
43
|
def index
|
41
44
|
@items = Item.preload(:comments).all.page(params[:page]).per(8)
|
42
45
|
# order_itemsのquentity(量)が多い商品ベスト3(販売数の多い商品ランキング)
|
@@ -44,7 +47,7 @@
|
|
44
47
|
end
|
45
48
|
```
|
46
49
|
|
47
|
-
```
|
50
|
+
```viewItemIndex
|
48
51
|
<div class="row my-2">
|
49
52
|
<h4 class="mx-auto">人気商品ベスト3</h4>
|
50
53
|
</div>
|
@@ -80,8 +83,15 @@
|
|
80
83
|
|
81
84
|
### 試したこと
|
82
85
|
|
86
|
+
●最初はfindで実装しようと思いましたが、order_itemテーブルにitem_idカラムをつけていなかったため、実現できませんでした。そのため、whereメソッドを用いて
|
87
|
+
@items_rank = Item.where(name: OrderItem.group(:name).order(quantity: "DESC").pluck(:name))
|
88
|
+
と書いています。
|
89
|
+
|
83
90
|
コンソールにてOrderItem.group(:name).order(quantity: "DESC").pluck(:name))を実行して、並び順が販売数(quantity)が多い順になっているのを確認しました。
|
84
91
|
|
92
|
+
テーブル設計でorder_itemにitem_idカラムを追加すればランキング機能を実装できるのですが、現状で解決できる方法はないかと思い質問させていただきました。
|
93
|
+
|
94
|
+
|
85
95
|
参照した記事
|
86
96
|
https://qiita.com/mitsumitsu1128/items/18fa5e49a27e727f00b4
|
87
97
|
|