Ruby on rails 如何为不同的请求建模不同类型的表单

Ruby on rails 如何为不同的请求建模不同类型的表单,ruby-on-rails,ruby-on-rails-4,model,Ruby On Rails,Ruby On Rails 4,Model,我很难找到适合我情况的信息。我正在尝试建模一个请求系统。用户可以提交请求,每个请求都有一组不同的字段。请求将是一种类型和一个子类型。每个请求类型都有一组特定于该类型的字段。另一组字段将特定于请求的子类型。以下是一个例子: 请求 许可证(申请类型) 许可证常规字段(请求类型=许可证) 许可证1 许可证2 许可证3 管道(许可证子类型) 管道1 水管2 管道3 电气(许可证子类型) 电气1 电气2 电气3 检查(请求类型) 检验常规字段(请求类型=检验) 检查1 检查

我很难找到适合我情况的信息。我正在尝试建模一个请求系统。用户可以提交请求,每个请求都有一组不同的字段。请求将是一种类型和一个子类型。每个请求类型都有一组特定于该类型的字段。另一组字段将特定于请求的子类型。以下是一个例子:

  • 请求
    • 许可证(申请类型)
      • 许可证常规字段(请求类型=许可证)
        • 许可证1
        • 许可证2
        • 许可证3
        • 管道(许可证子类型)
          • 管道1
          • 水管2
          • 管道3
        • 电气(许可证子类型)
          • 电气1
          • 电气2
          • 电气3
    • 检查(请求类型)
      • 检验常规字段(请求类型=检验)
        • 检查1
        • 检查2
        • 检查3
        • 建筑物(检查子类型)
          • 1号楼
          • 2号楼
          • 3号楼
        • 占用率(检查子类型)
          • 入住率1
          • 占用2
          • 占用3
此外,当用户登录时,他们应该能够查看列表中的所有请求。我认为这排除了多态性

到目前为止,我已经考虑了以下几点

性病 根据我所读到的,如果只有几个字段重叠,我不应该使用STI,这里就是这种情况。根据请求类型的不同,调查问卷会有很大差异

多态性 我不认为我在寻找一个属于不同类型问卷模型的请求模型,或者一个属于不同请求模型的问卷模型。如果我的理解是正确的,我将无法在列表中显示所有请求类型

每个请求类型都是它自己的模型 这样做似乎不切实际,当用户希望查看他们的所有请求时,我将如何整合它们?雇用请求,检查请求

STI w/Hstore 我已将代码分支以尝试此功能。这似乎是个不错的选择,但有一件事与我有关。如果我知道对于一个特定的请求类型,我将始终具有相同的常规字段集,那么我似乎应该使用表中定义的列来存储这些常规字段。但是,如果我在表中为每个请求类型定义字段,那么每个记录都会有很多空列,这不是好的STI


你对STI w/Hstore有什么看法?我有没有考虑过我所有的可能性?任何帮助都将不胜感激。提前感谢您的时间和反馈。

我正在做类似的工作。我发现测量师创业板目前不是最新的,并且有一段时间没有维护

我的解决办法是: 用户创建新实例(请求) 问卷属于一个实例,有很多问题 答案属于一个实例和一个问题

这样,用户可以接受任意数量的调查问卷,并且可以针对特定的请求类别开发特定的调查问卷


实现不同类型子项的一个好方法是使用嵌套表单。查看蚕茧宝石是进入这一领域的快捷方式:。在这个问题上也有一个railscast,但它已经过时了。

Jelle-感谢您的反馈。根据你的反馈,我已经排除了调查员的选择。在进行问答之前,我想看看是否还有其他选择。我还为我的帖子添加了更多的细节和一个例子。嗨,你可以使用嵌套的表单用我的建议来做这类事情。请看我更新的答案。Jelle-让我分支代码,试试你的建议。谢谢