这既是对现有开源模块的请求,也是对“架构”的请求。数据收集部分(询问问题)看起来可以使用测量器或向导宝石来完成。
在is...how上我需要帮助的那部分,你会对答案进行“加权”或“评分”来得出“个性”吗?例如,Myers-Briggs类型测试会提出多个问题,然后描述16种性格中的一种。
我想将我的结果限制在四个,但我不确定如何。标准“如果你得了10-16分,你就是摇滚明星;如果你得了5-9分,那就回家吧”,我不这么认为。
这更多的是一个“设计”的问题,所以如果有更好的地方我可以问,让我知道,但它感觉人们可能知道如何通过编程在rails中做这种简化的专家系统。
发布于 2011-04-13 01:24:56
您有四种个性类型,每个用户的测试都会为每种类型创建一个排名。(例如,在测试结束时,用户将具有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
的用户对象,它有四个字段: 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分。
https://stackoverflow.com/questions/5638390
复制相似问题