2016-06-14 93 views
0

我对Ruby on Rails比较陌生。如何保存用户动态创建的表单的响应

我有一个应用程序,其中用户可以创建表格。 我已经声明用户has_many的形式和形式belongs_to用户。

此外,表单有一个嵌套模型项目代表表单的问题,允许用户使表单有多个问题。此外,项目has_many 答案所以一个问题可以有多个答案(如无线电或复选框类型的问题)。最后,答案has_many 结果允许稍后为每个答案存储多个值,如果它由不同的人提供的话。

用户也有子女我希望他们申请他们创建的表格

我该如何做到这一点? 你会建议在我的子模型和表单模型之间创建一个关联吗?

你会怎么做?


因此,所有我需要的是有一个user可创建forms要回答用户的孩子的每一个。


更新:

于是我想出了以下的想法:

formchildren之间创建一个连接表映射它的形式被应用到孩子。

此外,result模型应该有一个answer_id它回答的答案列。我想这将需要另一列来指向上面连接表的id以映射哪个form-child属于哪个。

¿您认为这个逻辑是正确的吗?


当显示使用的形式,我打算通过每个项目显示form.title,循环到他们的项目,并通过每个答案显示其item.title,再次循环到它的答案,并显示其类型和标签为的每个结果的form_fields的字段类型和标签。

现在的问题是我该如何设法做到这一点? 我知道如何创建和保存特定数量的Objects但不包含动态数量的对象。

代码:

形式。RB

belongs_to :user 
has_many :items, dependent: :destroy 
accepts_nested_attributes_for :items, allow_destroy: true 

item.rb的

belongs_to :form 
has_many :answers, dependent: :destroy 
accepts_nested_attributes_for :answers, allow_destroy: true 

answer.rb

belongs_to :item 

回答

1

让我指出了可能是你的当前架构的问题:

回答的has_many结果让后存储多个值为每个答案,如果它是由不同的人submited

= >如果我们想要查询Form中特定的User有多少正确的答案或Form的总共多少个正确的答案,会发生什么?

用户还可以,我想他们申请他们创造

=>这是一种混乱,我们UserForm之间有关系的形式孩子:User可以创建许多FormsUser可以通过模型Children

我有一种这个问题之前的研究应用许多Form,这里是我建议的架构:

enter image description here

说明

  • User通过产生作用
  • Form许多Form有很多Item
  • Item有许多Question
  • Question有许多Answer(一个答案是正确的/不正确的)

  • User适用1 /许多Form一样,每次,一个AnswerSheetUserForm之间产生

  • AnswerSheet包含许多SelectedAnswer所以SelectedAnswer属于AnswerSheet和原始Answer。此外,SelectedAnswer是由用户选择Answer

这是清晰的,我们可以解释的模式与真正意义上的,因此,很容易理解&实施

一个注意的行动创造我使用AnswerSheet而不是你的想法Children,我认为这是有道理的,你可以任何你想要的术语,但只是确保人们了解它:)

+0

谢谢你的回答。好的,首先,我应该解决这个问题不会有正确/不正确的答案,但是查询特定答案可能是一个好主意。也许这就是我正在寻找的,我必须试一试。 – aleherzko

+0

我无法实现您的解决方案。现在的目标是能够创建并保存动态数量的“结果”,具体取决于表单可能具有多少个“项目”和“答案”。 – aleherzko

+0

该架构将与您的期望一致,您的问题是什么,您能详细描述一下吗? –

0

根据您的情况,我想推荐你有多对多的关系孩子和形式之间也有孩子的结果。

+0

好吧,但究竟这将允许我做什么?我怎样才能使用用户创建的表格,然后将其应用到他们的孩子?不知何故,我需要显示由用户创建的特定表单,然后才能在数据库中存储每个“结果”的值。 – aleherzko