2016-05-08 8 views
0

Railsアプリケーションでsurvey-answerデータ構造を作成してユーザ情報を収集しています。多肢選択肢、数値フィールド、オープンエンドの質問が混在していることを尋ねるので、私の(MySQL)データ構造は可変データ型に対応する必要があります。どうすればこれを達成できますか?Rails:変数タイプの回答を使用した調査データ構造の作成

  1. Userモデル(particpant)
  2. 調査モデル(調査)
  3. 質問モデル(質問が尋ねた)
  4. 選択モデル(可能な選択肢:私の現在の計画は前の回答hereに基づいています「テキスト」列に格納されている問題について)
  5. 回答モデル(参加ユーザーに選択肢をリンク答)

これはチェックボックス付きの複数選択肢のテキスト回答には効果的ですが、回答を整数フィールド(たとえば、 「あなたの年齢は何ですか?」)または空白のテキストフィールド(「何が改善できるか」など)

異なるタイプのフィールド

私はそれが非常に疎であるように、複数の可能な各タイプの列(例えばテキスト、整数、日時、等)を用いて選択またはアンサーモデルが悪いであろうと想像します。

各タイプの選択肢表が複数ある方が良いでしょうか? (Choice_Text、Choice_Integerなど)

しかし、Answerモデルはどのように適切な表にリンクされますか?

オープンは、私は別のデータ列として回答モデルに固有のテキストの回答を保存する、または新しいエントリ毎時間のような選択肢モデルにすべきユニークな答え

を終了しましたか?

ご協力いただければ幸いです。乾杯!

答えて

0

私は、さまざまなタイプの入力をリンクするために多態的な関連付けを使い、Choice_Textテーブルにそれらを追加することでオープンテキストのテキスト回答を処理しました。

誰もが将来的にこの遭遇した場合は、次のように、データ構造は:

class Survey < ActiveRecord::Base 
    has_many :survey_questions 
    has_many :survey_attempts 
end 

class SurveyAttempt < ActiveRecord::Base 
    has_many :survey_answers 
    belongs_to :survey 
    belongs_to :user 
end 

class SurveyQuestion < ActiveRecord::Base 
    has_many :survey_choices 
    belongs_to :survey 
end 

class SurveyChoice < ActiveRecord::Base 
    has_many :survey_answers 
    belongs_to :survey_question 
    belongs_to :survey_choice_value, polymorphic: true 
end 

class SurveyChoiceString < ActiveRecord::Base 
    has_many :survey_choices, as: :survey_choice_value 
    has_many :survey_question, through: :survey_choices 
end 

class SurveyChoiceText < ActiveRecord::Base 
    has_many :survey_choices, as: :survey_choice_value 
    has_many :survey_question, through: :survey_choices 
end 

class SurveyChoiceInteger < ActiveRecord::Base 
    has_many :survey_choices, as: :survey_choice_value 
    has_many :survey_question, through: :survey_choices 
end 

class SurveyAnswer < ActiveRecord::Base 
    belongs_to :survey_choice 
    belongs_to :survey_attempt 
end 
関連する問題