请参阅评论以获取更新。
我一直在努力得到一个清晰而直接的答案,我希望这次我能得到它!:D 我肯定还有很多东西要学习 Rails,但是我确实理解我面临的问题,并且非常感谢额外的帮助。
- 我有一个名为“任务”的模型。
- 我有一个名为“目标”的抽象模型。
- 我想将 Target 子类的多个实例与 Task 关联起来。
- 我没有使用单表继承。
- 我想查询多态关系以返回 Target 子类的混合结果集。
- 我想查询 Target 子类的各个实例以获取与它们有关系的任务。
所以,我认为任务和目标子类之间的多态多对多关系是有序的。更详细地说,我将能够在控制台中(当然还有其他地方)做这样的事情:
task = Task.find(1)
task.targets
[...array of all the subclasses of Target here...]
但!假设存在模型“Store”、“Software”、“Office”、“Vehicle”,它们都是“Target”的子类,那么在另一个方向上也可以遍历关系:
store = Store.find(1)
store.tasks
[...array of all the Tasks this Store is related to...]
software = Software.find(18)
software.tasks
[...array of all the Tasks this Software is related to...]
多态关系隐含的数据库表似乎能够进行这种遍历,但我看到一些反复出现的主题,试图找到一个对我来说违背多态关系精神的答案:
- 仍然使用我的示例,人们似乎想要在 Task 中定义 Store、Software、Office、Vehicle,我们可以立即看出这不是多态关系,因为它只返回一种类型的 model。
- 与最后一点类似,人们仍然希望以一种形式或形式在 Task 中定义 Store、Software、Office 和 Vehicle。这里重要的一点是关系对子类化是盲目的。我的多态最初只会作为目标进行交互,而不是作为它们各自的子类类型。在 Task 中定义每个子类再次开始侵蚀多态关系的目的。
- 我看到连接表的模型可能是有序的,这对我来说似乎有些正确,只是它增加了一些我认为 Rails 愿意放弃的复杂性。我恳求在这方面没有经验。
这似乎是 Rails 功能或集体社区知识中的一个小漏洞。所以希望stackoverflow可以记录我对答案的搜索!
感谢所有帮助的人!