Ruby on Rails has_many多态

时间:2017-07-14 03:20:56

标签: ruby-on-rails ruby activerecord polymorphism associations

我有一个模型,项目。
每个项目都有很多特征 特征可以是许多不同的东西:
一个SizeTrait
一个ToppingsTrait
一个FlavorTrait
等等

如何在Ruby on Rails中设置这种关系?在普通的Ruby应用程序中,我可以使用duck typing,但这需要存储在数据库中。

它与belongs_to相反,具有多态:true

我想避免单表继承作为这些特性,而它们将共享一个duck类型的接口,将具有非常不同的功能。这会导致表中的许多未使用的字段,这似乎是一种混乱,令人困惑的方式。

在StackOverflow上已经有一些关于此的帖子,但是有一个与我的情况不同,另一个有一个非常狡猾的解决方案,我想看看是否有更好的。

1 个答案:

答案 0 :(得分:1)

您无法跨多态关联进行连接。最好的方法是按照前面提到的那样简单地使用STI。虽然你可能会争辩说你将有多个字段将为null,但至少rails可以进行合理的连接来帮助你进行查询。