我很难找到适用于我的情况的信息。我在试着建立一个请求系统。用户可以提交请求,每个请求都有不同的字段集。请求将分为一种类型和一种子类型。每个请求类型都有一组特定于该类型的字段。另一组字段将特定于请求的子类型。下面是一个示例:
- Electrical (Permit Sub Type)
- Electrical 1
- Electrical 2
- Electrical 3- Inspection (Request Type)
- Inspection General Fields (Request Type = Inspection)
- Inspection 1
- Inspection 2
- Inspection 3
- Building (Inspection Sub Type)
- Building 1
- Building 2
- Building 3 - Occupancy (Inspection Sub Type)
- Occupancy 1
- Occupancy 2
- Occupancy 3此外,当用户登录时,他们应该能够在列表中查看他们的所有请求。我认为这排除了多态性
到目前为止,我已经考虑了以下几点
STI
根据我所读到的,如果只有少数几个字段重叠,我就不应该使用STI,这里就是这种情况。调查问卷将根据请求类型而有很大差异。
多态
我不认为我正在寻找一个请求模型属于不同类型的问卷模型或一个问卷模型属于不同的请求模型。如果我的理解是正确的,我将无法显示列表中的所有请求类型。
每个请求类型都是它自己的模型
这样做似乎不太实际,而且当用户希望看到他们的所有请求时,我会如何合并他们呢?EmploymentRequest,InspectionRequest
STI /Hstore
我已经扩展了我的代码来尝试这个。这似乎是个不错的选择,但有一件事关系到我。如果我知道对于特定的请求类型,我将始终拥有相同的常规字段集,似乎我应该使用表中定义的列来存储这些常规字段。但是,如果我为每个请求类型在表中定义了字段,那么每条记录都会有很多空列,这不是一个好的STI。
你对STI /Hstore有什么看法?我看过我所有的可能性了吗?任何帮助都将不胜感激。提前感谢您的时间和反馈。
发布于 2014-03-17 13:12:19
我正在做类似的事情。我发觉验船商的宝石目前并不是最新的,也有一段时间没有保养。
我的解决方案是:用户创建新实例(请求)--一个问卷属于一个实例,有许多问题答案属于一个实例和一个问题
通过这种方式,用户可以接受任意数量的问卷,并且可以针对特定的请求类别编写具体的问卷。
实现不同类型子项的一个很好的方法是使用嵌套表单。看看蚕茧宝石,作为一种快速的方式进入这个:https://github.com/nathanvda/cocoon。在这个问题上也有铁路广播,但已经过时了。
https://stackoverflow.com/questions/22453938
复制相似问题