如何保存用户动态创建的表单的响应
我对Ruby on Rails比较陌生。如何保存用户动态创建的表单的响应
我有一个应用程序,其中用户可以创建表格。 我已经声明用户has_many的形式和形式belongs_to用户。
此外,表单有一个嵌套模型项目代表表单的问题,允许用户使表单有多个问题。此外,项目has_many 答案所以一个问题可以有多个答案(如无线电或复选框类型的问题)。最后,答案has_many 结果允许稍后为每个答案存储多个值,如果它由不同的人提供的话。
用户也有子女我希望他们申请他们创建的表格。
我该如何做到这一点? 你会建议在我的子模型和表单模型之间创建一个关联吗?
你会怎么做?
因此,所有我需要的是有一个user
可创建forms
要回答用户的孩子的每一个。
更新:
于是我想出了以下的想法:
form
和children
之间创建一个连接表映射它的形式被应用到孩子。
此外,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
让我指出了可能是你的当前架构的问题:
回答的has_many结果让后存储多个值为每个答案,如果它是由不同的人submited
= >如果我们想要查询Form
中特定的User
有多少正确的答案或Form
的总共多少个正确的答案,会发生什么?
用户还可以,我想他们申请他们创造
=>这是一种混乱,我们User
和Form
之间有关系的形式孩子:User
可以创建许多Forms
和User
可以通过模型Children
我有一种这个问题之前的研究应用许多Form
,这里是我建议的架构:
说明
-
User
通过产生作用 -
Form
许多Form
有很多Item
-
Item
有许多Question
Question
有许多Answer
(一个答案是正确的/不正确的)User
适用1 /许多Form
一样,每次,一个AnswerSheet
被User
和Form
之间产生-
AnswerSheet
包含许多SelectedAnswer
所以SelectedAnswer
属于AnswerSheet
和原始Answer
。此外,SelectedAnswer
是由用户选择Answer
这是清晰的,我们可以解释的模式与真正意义上的,因此,很容易理解&实施
一个注意的行动创造我使用AnswerSheet
而不是你的想法Children
,我认为这是有道理的,你可以任何你想要的术语,但只是确保人们了解它:)
根据您的情况,我想推荐你有多对多的关系孩子和形式之间也有孩子的结果。
好吧,但究竟这将允许我做什么?我怎样才能使用用户创建的表格,然后将其应用到他们的孩子?不知何故,我需要显示由用户创建的特定表单,然后才能在数据库中存储每个“结果”的值。 – aleherzko
谢谢你的回答。好的,首先,我应该解决这个问题不会有正确/不正确的答案,但是查询特定答案可能是一个好主意。也许这就是我正在寻找的,我必须试一试。 – aleherzko
我无法实现您的解决方案。现在的目标是能够创建并保存动态数量的“结果”,具体取决于表单可能具有多少个“项目”和“答案”。 – aleherzko
该架构将与您的期望一致,您的问题是什么,您能详细描述一下吗? –