【问题标题】:Handling multiple forms interacting with the same model in Rails在 Rails 中处理与同一模型交互的多个表单
【发布时间】:2013-11-25 06:17:07
【问题描述】:

我有一个处理“患者”的应用程序。每个患者将有他们最初处理的三种表格。每个表格都有相关的问题,但也有区别,所以不能是同一个表格。每个答案,即使是针对同一个问题,也必须记录和存档。此外,每个填写的表格都需要有一定的版本意识。例如,如果患者“史蒂夫”在“10 月 5 日”填写了“表格 1”,并且第二天从表格中删除了一个问题,我仍然需要能够提取史蒂夫在表格 1 中填写的问题. 现在我有四个模型可以解决这个问题,它们是:

患者:名、姓

形式:名称、版本

form_response:患者id,form_id

问题:内容、form_id

答案:response、question_id、form_response_id

这是绘制此数据集的最佳方式吗?另外,这一切都应该通过患者模型来处理吗?如果不是,应该使用什么类型的模型结构来处理这个问题?我真的很困惑如何最好地处理这种情况,至于应该去哪里,而不是最终维护一堆乱七八糟的代码。提前感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails ruby database activerecord model


    【解决方案1】:

    你有正确的想法。从顶部开始:

    表格

    • 有_很多问题

    问题

    • belong_to 形式
    • 有很多答案

    答案

    • 属于问题
    • belong_to 响应

    然后你将它与响应联系在一起:

    回复

    • 属于患者
    • belongs_to 形式

    【讨论】:

    • 非常感谢您的回复。很高兴知道我在正确的轨道上。至于如何在模型中处理这个问题,您认为一个好的策略是什么?是通过患者模型处理所有事情,还是在它之外进行委托?
    • @sturoid 如果是我,我会让表单处理所有这些,并将患者 ID 存储在会话(或其他内容)中,然后在最后创建响应。嵌套模型表单也将成为您的朋友:railscasts.com/episodes/196-nested-model-form-part-1
    【解决方案2】:

    我建议研究表单对象以使这更容易。您可能想结帐:

    Form-backing objects for fun and profit

    Rails Form Objects

    Form Objects

    【讨论】:

    • 我真的倾向于这种方法。您将如何为此处理路由和控制器/控制器操作?所以我将有 3 个表单都想与 Patient 模型进行交互。你会使用新的控制器和/或控制器吗?
    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 2012-05-14
    • 1970-01-01
    • 2019-08-23
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多