私はこのクイズアプリケーションを構築しています。ちょっと洗練されたものにしたい。
私はこのデータベース スキーマを思いつきました。しかし、私は本当に混乱しています..どのような関連付けが必要かなどについて混乱しています。
1 つ注意すべき点は、テストが作成されるとき、それを受ける受験者の数に関する情報がないことです。test_questions
そのため、とcandidate_answers
を別のテーブルとして作成しました。
協会で私を助けてください。
私はこのクイズアプリケーションを構築しています。ちょっと洗練されたものにしたい。
私はこのデータベース スキーマを思いつきました。しかし、私は本当に混乱しています..どのような関連付けが必要かなどについて混乱しています。
1 つ注意すべき点は、テストが作成されるとき、それを受ける受験者の数に関する情報がないことです。test_questions
そのため、とcandidate_answers
を別のテーブルとして作成しました。
協会で私を助けてください。
見てみましょう、それは次のようになります。
# For Questions:
:has_many => :answers
:belongs_to => :test_question
# questions table should have the "test_question_id" column
# Answers:
:has_many => :candidate_answers
:belongs_to => :question
# Answers table should have the "question_id" column
#Test Questions:
:has_many => :questions
:has_many => :candidate_answers
:belongs_to => :test
# test questions table should have the "test_id" column but not the "question_id"
#Tests:
:has_many => :results
:has_many => :test_questions
:has_many => :candidates, :through => :results, :foreign_key => "candidate_id" #why not? ^^
#Results
:belongs_to => :test
:belongs_to => :candidate
# Results table should have the "test_id" and "candidate_id" columns
#candidate_answers
:belongs_to => :candidate
:belongs_to => :test_question
:belongs_to => :answer
# candidate_answers table should have the "test_question_id", "candidate_id" and "answer_id" columns
#Candidates
:has_many => :candidate_answers
:has_many => :results
:has_many => :answered_tests, :class_name => "test", :through => :results, :foreign_key => "test_id" # again, why not?
そして、あなたが与えた情報で、それはあなたが望むことをするはずです。;)
これは次のことを行う必要があります。
candidate_answers.test_question
candidate_answers
テーブルをドロップtest_questions
テーブルをドロップ
class Test < ActiveRecord::Base has_many :results has_many :questions end
class Result < ActiveRecord::Base 所属先 :test 所属先 :候補 end
class Candidate < ActiveRecord::Base has_many :results has_many :answers end
class Answer < ActiveRecord::Base 所属先 :質問 所属先 :候補 end
クラスの質問
複数の質問に対して回答を再利用するつもりだったようですが、それは一般的に悪い考えです..その場合は、回答を複製することをお勧めします。