0

我有一种情况,我需要从用户那里收集数据、保存数据,然后才能返回并查看数据。在这种情况下,它是一项调查。通常我会创建一个模型并进行一些验证,这将非常简单。

但是在这种情况下,问题变化如此频繁,以至于如果我这样做了,我可能会发现自己正在编写新的迁移并不断地执行各种维护。由于我们真正想要的只是数据本身,所以我想到我应该只创建一个具有 id 字段和 form_data 字段的模型,然后将任何参数粘贴到该 form_data 字段中。这样我所要做的就是改变视图而不是弄乱模型。

但后来如果我想编辑调查中的数据,我将如何填充表单字段?目标是仅在我的老板想要添加新问题时更改视图。

PS我不想使用Surveyor来完成这项任务,因为我希望能够做一些在Surveyor中不容易做到的事情,据我所知。

所以这就是它的样子

SurveySubmissions
  id : integer
  form_data: string

SurveySubmissions.find(1).form_data
   "name":"Kevin"
   "gender":"Male"
   "favorite_color":"blue"
4

3 回答 3

1

如果您使用的是 PostgreSQL,您可以查看 Hstore。一个不错的起点是 Railscast:http ://railscasts.com/episodes/345-hstore (专业剧集,因此需要付费)。它允许您将所有问题/答案对存储在单个数据库列中。

您还可以将数据序列化为 json/yml 的单个数据库列,并在模型上使用虚拟属性来轻松填充表单字段(关于虚拟属性的 Railscast 插曲:http ://railscasts.com/episodes/16-virtual-属性修改,还有老剧免费)

另一个解决方案(也是我最喜欢的)是使用 MongoDB + Mongoid 及其动态属性。如果您还没有开始编码,这可能是最好的解决方案。

于 2013-02-08T13:05:28.060 回答
0

这可能对您有帮助:

用户模型

has_many :surveys

调查模型

belongs_to :user
has_many :questions

提交模型

has_many :questions
belongs_to :user
belongs_to :survey

问题模型

has_many :answers
polymorphic => belongs_to "survey and submissions"

答案模型

belongs_to :submission
belongs_to :question

最重要的是,您可以根据您的要求建立关系和其他您需要的东西

于 2013-02-08T04:28:54.680 回答
0

我认为最好的选择是将表单字段保存到数据库中,然后在编辑时使用 javascript 重新填充表单。因此,我将所有字段值拉入一个变量,然后使用 JQuery.each 填充字段。

surveySubmissionData = {"incident_id":"2013BaconSupreme",
    "_confirmed":"No",
    "_date_began":"2/26/2013"}

// Put some code here that loops through the surveySubmissionData 
// and populates the form.

jQuery.each(surveySubmissionData, function(i, val) {
    $("#" + i).val(val);
});
于 2013-02-27T15:47:15.593 回答