質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

0回答

837閲覧

ActiveRecordで特定のテーブルから特定のカラムの値ごとに一定件数取得したい

begenner

総合スコア79

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2021/07/26 13:38

編集2021/07/28 06:09

現在Railsでアプリを作成しています。
現在トップページを作成していますが、Controller上で同じモデルに対して3回レコードを取得する処理が走るような設定になっています。
現在のコードだと何回もDBにアクセスしているので、少しでもアプリの動作に負担がかからないように、
これらを

  • genre_idごとにグルーピング
  • genre_idごとに取得する件数を制限(10件ずつ、合計で30件)
  • 上記で抽出したレコードを一つのインスタンスに格納したい

といった内容ですが、該当しそうな記事を見つけられませんでした。
もしわかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m_ _m)

期待する動作

  • genre_idごとにグルーピング
  • genre_idごとに取得する件数を制限(10件ずつ、合計で30件)
  • 上記で抽出したレコードを一つのインスタンスに格納したい

テーブル構成

テーブル構成は以下のようになっています
Snackテーブル

idnamegenre_id
1snack11
2snack21
3snack31
4snack42
5snack52
6snack63

Genreテーブル

idname
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>と表示されデータが取得できません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問