- 実例:テーブル設計想定
- ネック部分
- Step1.カラムに特定の値を持つレコードを取り出す記述
- Step2.絞り出したレコードから特定のカラムの値を取得する記述
- Step3.pluckで取り出した情報をビューに表示する
実例:テーブル設計想定
ユーザーのテーブルと、ユーザーが回答したアンケート結果のテーブルを想定する。
ネック部分
例えば、ユーザー詳細ページにおいて以下の情報が欲しいとしよう。
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となる。