14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have 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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?