2013-06-05 41 views
0

我有一个复杂的关系,我很难在意见中代表。我需要一些帮助,找出建立关系的最佳方式,这可能会解决我的大部分问题。已经和属于很多通过

我有一个图表这里:Diagram

基本上我试图建立应用程序的动态测量类型。管理员可以添加问题和问题选项。当用户登录时,他们可以回答这些问题。他们只能为每个问题选择一个答案,但会有一个部分,他们可以选择他们从“匹配”中接受的任何答案。这将用于匹配用户。

例如:

问:

你最喜欢什么颜色? A)红色B)黄色C)蓝色

比利选择红色,但表示他会接受红色或黄色作为比赛的答案。

约翰选择黄色,并说他会接受红色或黄色的答案。因为他们都选择了彼此相互“接受名单”的颜色,那么这两个问题就会相互匹配。

建立关系并在视图中表示它的好方法是什么?我很难在这一个包裹着我的大脑...

谢谢!

回答

1

我不知道你是否可以改变你的模式,但如果是的话,我认为你可以做到这一点。

我会尝试做一些象下面这样:

模型(表):

Users 
    -id 

Questions 
    -id 

Choices 
    -id 
    -question_id 

Answers 
    -id 
    -user_id 
    -choice_id 
    -question_id 
    -is_acceptance (boolean) 

User has_many answers 
Qestion has_many choices 
Choice belongs_to question 
Answer bleongs_to user , question 

然后你可以保存所有的答案在一个表和标志(true或false)仅主的答案。 毕竟你可以编写自己的逻辑来回答相同的答案,接受答案等。

+0

是的,我很乐意改变模式。我有一种习惯,有时候会让事情变得复杂。我不需要这样做吗?我如何只显示与登录用户相关的问题/答案?对不起愚蠢的问题我意识到!再次感谢 – Sean

+0

HABTM对许多协会来说都是麻烦[链接](http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association)我没有看到你可以像那样关联。 btw在habtm你需要新的连接表。如果您需要与acceptance_answer不同的答案,则可以构建新模型(与答案几乎相同)。所有的答案都与用户相关联,我认为没有问题只显示记录的答案:) – Karol85