2011-04-12 3 views
0

이것은 "아키텍처"뿐만 아니라 기존의 오픈 소스 모듈에 대한 요청이기도합니다. 측량 자나 마법사 보석을 사용하여 데이터 수집 부분 (묻는 질문)을 만들 수 있습니다.Rails를 사용하여 "성격 테스트"를 어떻게 만들 수 있습니까?

내가 도움이 필요한 부분은 ... "성격"을 생각해 내기 위해 어떻게 대답을 "가중치를"쓰거나 "채점"합니까? 예를 들어, Myers-Briggs 유형 테스트는 여러 가지 질문을 한 다음 16 명의 성격 중 한 가지를 설명합니다.

내 결과를 4 개로 제한하고 싶지만 어떻게할지는 모르겠다. "당신이 10-16 점을 얻었다면 당신은 록 스타이고, 5-9 점을 얻으면 집에 돌아 간다"나는 똑같은 방식으로 생각하지 않는다.

이 질문은 디자인에 관한 질문 일 뿐이므로 더 좋은 곳을 물어볼 수는 있지만 알려 주시면 사람들이 프로그래밍 방식으로 이러한 단순화 된 전문가 시스템을 수행하는 방법을 알게 될 것입니다.

답변

0

네 가지 특성 유형이 있으며 각 사용자 테스트는 각 유형의에 대한 등급을 생성합니다. (예 : 테스트가 끝나면 Type-A는 50 점, Type-B는 86 점, Type-C는 34 점, Type-D는 60 점입니다. 사용자는 가장 높은 점수를 가진 성격 유형에 의해 지정됩니다. (예 : B 형)

성격 테스트의 각 질문은 객관식 테스트입니다. 모든 대답은 하나 이상의 성격 유형에 일정한 금액을 제공합니다. 예를 들어 질문 1에서 "D"의 답은 Type-A에 5 점, Type-B에 3 점, Type-C 및 Type-D에 0 점을 제공합니다.

각 질문에 대한 각 답변 네 자리 숫자 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" /> 

다음은 루비 온 레일즈 백 엔드를 처리하는 방법입니다. 먼저 @user이라는 User 객체가 있습니다.이 객체에는 type_a, type_b, type_c, type_d의 네 개의 필드가 있으며 사용자가 네 가지 유형의 각 유형과 얼마나 잘 맞는지 나타냅니다.

컨트롤러에서
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위한 두 번째 방법 (대응을 선택하는 경우 사용자 모델에서, 이와 같은 방법을 포함 "3211"의 값), 그의 성격 프로파일은 유형 A에 대해 3 점, 유형 B에 대해 2 점, 유형 C에 대해 1 점, 유형 D에 대해 1 점 증가합니다.

+0

루비 (또는 레일)에서 "수학"을 구성하는 좋은 방법은 무엇입니까? – Angela

+0

Rails에서 각 User 객체는 네 개의 정수 필드 (각 특성 유형에 하나씩)를 갖습니다. 사용자가 양식 정보를 제출할 때마다/User 오브젝트의 네 정수 필드가 업데이트됩니다. 예 : 'params [: question1] == "a"; type_a + = 4; end' – JellicleCat

+0

(이것은 스케일링에 도움이되지 않기 때문에 좋은 예는 아니지만 시스템 자체를 실제로 설계하지 않고 더 많은 것을 제공하는 것은 어렵습니다.) – JellicleCat

관련 문제