LoginSignup
14
7

More than 1 year has passed since last update.

Railsで作るクイズアプリのテーブル設計

Last updated at Posted at 2021-09-27

前提

  • 問題の作成、回答ができる
  • 回答の選択肢を増やせる

上記のようなアプリを作りたい方は、ぜひ参考にしてみてください。

完成系

Image from Gyazo

テーブルの役割

quizzesテーブル

作成者の情報と問題の大枠を管理する。

questionsテーブル

問題の内容を格納する。

choicesテーブル

選択肢の情報を格納する。
また、correct_answerbooleanで設定し、回答正誤を判定する。

challengersテーブル

回答者の情報を管理しています。
また、ランキング機能を作るためにscoreカラムを追加。

解説

NGパターン

クイズアプリのテーブル設計をする際パッと思いつくのは、こんな感じではないでしょうか?

question choice_1 choice_2 correct_answer
休みの日は何して過ごす? 家でゴロゴロ 外へおでかけ 1
どっが好き? レストラン 大衆居酒屋 2

しかしこれだと、選択肢を追加したいときにはカラムを増やすしかなくなってしまいます。

OKパターン

それぞれにテーブルを設け、questions < choices の関係でアソシエーションを組む。

id question
1 休みの日は何して過ごす?
2 どっが好き?
id choice correct_answer question_id
1 お家でゴロゴロ true 1
2 外へおでかけ false 1
3 レストラン false 2
4 大衆居酒屋 true 2
14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7