这既是对现有开源模块的请求,也是对“架构”的请求。数据收集部分(提问)似乎可以使用测量员或向导宝石完成。
我需要帮助的部分是......你如何“重量”或“得分”答案以提出“个性”?例如,Myers-Briggs类型测试会提出多个问题,然后描述16个人中的一个。
我想将结果限制为四,但我不确定如何。标准“如果你得分10-16,那你就是摇滚明星;如果你得分5-9,那就回家吧”我认为这种方式并不相同?
这更像是一个“设计”问题,所以如果有一个更好的地方我可以问它,请告诉我,但感觉人们可能会以编程方式了解如何使用rails来完成这种简化的专家系统。< / p>
答案 0 :(得分:0)
您有四种人格类型,每个用户的测试都为这些类型的每个创建一个等级。 (例如,在测试结束时,用户的A型得分为50,B型得分为86,C型得分为34,D型得分为60)用户由具有最高分数的个性类型指定。 (例如,B型)
人格测试中的每个问题都是多项选择。每个答案都对一种或多种人格类型有一定的贡献。 (例如,在问题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,表示用户与四种人格类型中的每一种对齐的程度。在您的用户模型中,包含以下方法:
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”),那么他的个性简介将增加3个类型A,2个类型B,1个类型C,类型D为1磅。