Rails DBからの取得で下記詰まっています。
助言がいただけると幸いです。
###前提
- Rails
- Active Record
- 表示ページ
主催者(ホスト)詳細画面 開催イベント一覧を表示 - 開催イベントはゲストからストックされる
- ホスト開催イベント一覧をゲストからのストック数順で表示したい
- ER図
| 1 < 多 Hosts|-< Events|-< Stocks >-|Guests Stocks が中間テーブル event_id と guest_id が記録される
###実現したいこと
- 主催者(ホスト)詳細画面にて
- 中間テーブルのevent_id をgroup して guest_id の数の多い順に並べる
- stockされた数を表示したい
###試したこと
ruby
1host_id = params[:host_id] 2host_events = Host.find(host_id).events.pluck(:id) 3Event.where(id: host_events).joins(:stocks).group(:event_id).order('count(guest_id) desc')
- Eventsテーブルのレコードを該当ホストのものに絞る
- その上でstocksに結合
- .group(:event_id)でまとめる
- .order('count(guest_id) desc') で並び替え
追記1
上記で並び替えた一覧の取得ができました。
あとはストック数を取得して表示になります。
追記2
試したことのコードに count
をつけることで id と ストック数を取得できました。
ワンライナーでできたらと思うのでもう少し調べてみます。
なければそのまま自己解決にします。
助言いただけると幸いですmm
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。