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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Active Record

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

Q&A

解決済

1回答

486閲覧

【Rails / SQL】paramsメソッドを使用して、検索したい条件を設定(グループ化?)し、Active Recordを用いてデータ取得したい。

nyako

総合スコア45

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Active Record

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

0グッド

0クリップ

投稿2021/05/03 13:11

commentsテーブル

|id|comment|user_id(FK)|evaluation|
|:--|:--:|--:|
|1|hello|3| 5.0|
|2|good night|2| 4.5|
|3|hi|2| 3.5|
|4|yes|1| 2.5|
|5|yee|4| 3.0|

ruby

1 2 id = params[:user_id] 3 average = Comment.group(user_id: id).average(:evaluation) 4

####やりたいこと

パラメータから送られてきたuser_idをもとにuser_id毎にグループ化して平均値を出すということをしたいのですが、上記のコードで検索をすると

ruby

1Arel::Visitors::UnsupportedVisitError (Unsupported argument type: Hash. Construct an Arel node instead.)

上記のようになります。そもそもこの検索の仕方が誤ってるかもしれません。

色々自分で探してみましたが中々解決しないので質問させて頂きます。宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

パラメータから送られてきたuser_idをもとに

具体的にuser_idとして何が送られてそれが結果にどう影響するのでしょうか?

「user_id毎にグループ化して平均値を出す」のにuser_idの数値を指定する必要があるのでしょうか?

全体の「user_id毎にグループ化して平均値を出す」を取りたいのならば

ruby

1average = Comment.group(:user_id).average(:evaluation)

指定した複数のuser_idから「user_id毎にグループ化して平均値を出す」ならば

ruby

1averages = Comment.where(user_id: params[:user_ids]).group(:user_id).average(:evaluation)

指定したuser_idの平均がほしければ

ruby

1average = Comment.where(user_id: params[:user_id]).average(:evaluation)

投稿2021/05/03 16:40

asm

総合スコア15149

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

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

nyako

2021/05/06 09:04

asm様お返事遅くなりすみません。無事解決しました。本当にありがとうございました。非常に長い時間考えていたのでやっと先に進めます。 > 具体的にuser_idとして何が送られてそれが結果にどう影響するのでしょうか?「user_id毎にグループ化して平均値を出す」のにuser_idの数値を指定する必要があるのでしょうか? パラメーターで受け取った指定のユーザーidだけの平均値が欲しくて、最終的にその平均値をJson形式で返すRailsでのAPIモードで実装しています。 そもそもWhereメソッドとGroupメソッドの意味がしっかりと理解出来ていなかったのでこのような問題にも繋がったと思います。 上記を踏まえ、今回実装したのは ## 指定したuser_idの平均がほしければ ## のasm様3番目の回答で無事解決しました。 是非これからも宜しくお願い致します!^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問