如何使用Rails创建“个性测试”?

时间:2011-04-12 16:14:45

标签: ruby-on-rails

这既是对现有开源模块的请求,也是对“架构”的请求。数据收集部分(提问)似乎可以使用测量员或向导宝石完成。

我需要帮助的部分是......你如何“重量”或“得分”答案以提出“个性”?例如,Myers-Briggs类型测试会提出多个问题,然后描述16个人中的一个。

我想将结果限制为四,但我不确定如何。标准“如果你得分10-16,那你就是摇滚明星;如果你得分5-9,那就回家吧”我认为这种方式并不相同?

这更像是一个“设计”问题,所以如果有一个更好的地方我可以问它,请告诉我,但感觉人们可能会以编程方式了解如何使用rails来完成这种简化的专家系统。< / p>

1 个答案:

答案 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磅。