現在Railsでアプリを作成しています。
現在トップページを作成していますが、Controller上で同じモデルに対して3回レコードを取得する処理が走るような設定になっています。
現在のコードだと何回もDBにアクセスしているので、少しでもアプリの動作に負担がかからないように、
これらを
- genre_idごとにグルーピング
- genre_idごとに取得する件数を制限(10件ずつ、合計で30件)
- 上記で抽出したレコードを一つのインスタンスに格納したい
といった内容ですが、該当しそうな記事を見つけられませんでした。
もしわかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m_ _m)
期待する動作
- genre_idごとにグルーピング
- genre_idごとに取得する件数を制限(10件ずつ、合計で30件)
- 上記で抽出したレコードを一つのインスタンスに格納したい
テーブル構成
テーブル構成は以下のようになっています
Snackテーブル
id | name | genre_id |
---|---|---|
1 | snack1 | 1 |
2 | snack2 | 1 |
3 | snack3 | 1 |
4 | snack4 | 2 |
5 | snack5 | 2 |
6 | snack6 | 3 |
Genreテーブル
id | name |
---|---|
1 | ゼリー状 |
2 | 液体状 |
3 | 固形状 |
現在のコード
ruby
1# controller 2@jelly_snacks = Snack.where(genre_id: 1).limit(10) 3@liquid_snacks = Snack.where(genre_id: 2).limit(10) 4@solid_snacks = Snack.where(genre_id: 3).limit(10) 5# 以下のように上記をまとめて取得したいができない 6@snacks = Snack.group(:genre_id).limit(10)
ruby
1# model(Snack) 2enum genre_id: { jelly: 1, liquid: 2, solid: 3}
動作環境
Ruby: 2.5.7
Rails: 5.1.7
試したこと
Snack.group(:genre_id).limit(10)
で取得し様子するとSnack::ActiveRecord_Relation:0xb8c4>
と表示されデータが取得できません
あなたの回答
tips
プレビュー