ЯoomeR

プログラミング~実装とエラー解決と、時々、AI~

特定の値を持つカラムのレコードを取り出す方法

実例:テーブル設計想定

ユーザーのテーブルと、ユーザーが回答したアンケート結果のテーブルを想定する。

ネック部分

例えば、ユーザー詳細ページにおいて以下の情報が欲しいとしよう。

user_idが1の人が、犬派と答えたか猫派と答えたか

これが地味に難しいのがお分かりいただけるだろう。

例によって@userを以下のように定義する。

@user = User.find(params[:id])

では、求める情報(questionsテーブルのid=2 の answeraカラムの値)はどのように取り出せば良いだろうか。

Step1.カラムに特定の値を持つレコードを取り出す記述

@animal = Question.where(monthly_briefing_user_id: @user.id, question: '犬派?猫派?')

whereを用いることで、「user_idカラムには@userのidが入っており、questionカラムには'犬派?猫派?'が入っているレコード」を取り出すことができる。

Step2.絞り出したレコードから特定のカラムの値を取得する記述

@animal = Question.where(monthly_briefing_user_id: @user.id, question: 'age').pluck(:answer)

pluckを用いることで、対象レコードのanswerカラムの情報を取り出すことができる。

ただし、pluckは配列情報となるため、ビューで取り出すには後一つ工夫が必要である。

Step3.pluckで取り出した情報をビューに表示する

<%= @animal[0] %>

@animalの中身は配列であるため、配列内の最初の要素を取り出す記述にすれば良い。

今回の例では一つのレコードに絞られるから、配列番号は0となる。