2011-04-12 3 views
0

これは、既存のオープンソースモジュールと「アーキテクチャ」の両方の要求です。データ収集部(質問をすること)は、サーベイサーやウィザードの宝石を使って行うことができます。Railsを使用して「パーソナリティテスト」を作成するにはどうすればよいですか?

私は助けが必要な部分はどのように答えを「重み付けする」か「得点する」ことで、「性格」を思いつくのですか?たとえば、Myers-Briggsタイプのテストでは、複数の質問を行い、16人のパーソナリティの1つを記述します。

結果を4つに制限したいのですが、どうすればよいかわかりません。スタンダードは "10-16を獲得すればロックスター、5〜9を獲得すれば帰国する"と同じように動作するとは思わない?

これは「設計」問題のほうが多いので、私はそれを聞くことができる場所があれば教えてください。しかし、この種の単純化されたエキスパートシステムをどのように行うかを人々がプログラムで知っていると感じています。

答えて

0

あなたには4つのパーソナリティタイプがあり、各ユーザのテストではのランクが作成されます。それぞれです。 (例えば、テストが終了すると、ユーザーはType-Aのスコアが50、Type-Bのスコアは86、Type-Cのスコアは34、Type-Dのスコアは60となります)ユーザは、最も高いスコアを有するパーソナリティタイプによって指定される。 (タイプBなど)

パーソナリティテストの各質問は複数選択です。すべての回答は、1つまたは複数のパーソナリティタイプに一定の金額を提供します。 (例えば、質問1では、「D」の回答は、タイプAに5ポイント、タイプBに3ポイント、タイプCおよびタイプDに0ポイントを寄付する)

各質問ごとの回答あなたのバックエンドの数学をどのように実行すべきかを示す4桁のvalue属性を持っています。例:

<input type="radio" name="question_one" value="5400" /> 
<input type="radio" name="question_one" value="3211" /> 
<input type="radio" name="question_one" value="5608" /> 
<input type="radio" name="question_one" value="9006" /> 

ここでは、Ruby on Railsでバックエンドを処理する方法について説明します。まず、ユーザが@userという名前のUserオブジェクトを持っています。このオブジェクトには、type_a、type_b、type_c、type_dの4つのフィールドがあり、ユーザーが4つのパーソナリティタイプのそれぞれとどの程度うまく対応しているかを示します。あなたのユーザーモデルでは、このような方法を含む:あなたのコントローラで

def process_answer(value) 
    self.type_a += value[0].chr.to_i 
    self.type_b += value[1].chr.to_i 
    self.type_c += value[2].chr.to_i 
    self.type_d += value[3].chr.to_i 

を、ユーザーインスタンスにフォームデータを渡す:

@user.process_answer(params[:question_one]) 

ユーザが(に対応question_oneための2番目のオプションを選択した場合"3211"という値)、彼の性格プロフィールは、タイプAの場合3pt、タイプBの場合2pt、タイプCの場合1pt、タイプDの場合1pt増加する。

+0

ルビー(またはレール)で「数学」を構築するにはどうすればよいですか? – Angela

+0

Railsでは、各Userオブジェクトに4つの整数フィールド(各パーソナリティタイプごとに1つ)があります。ユーザーがフォーム情報を送信するたびに、/ Userオブジェクトの4つの整数フィールドが更新されます。例えば'if params [:question1] ==" a ";タイプ_a + = 4; 「 – JellicleCat

+0

」(スケーリングには向いていないので、これは素晴らしい例ではありませんが、システムを実際に設計しなくても、それ以上のものを提供するのは難しいです。) – JellicleCat

関連する問題