Rails 多态关联和数据库查询

Rails polymorphic associations and database queries

我对几个多态关联有疑问。我正在尝试通过多态关联将用户和食谱连接到共享的饮食要求 (DR),饮食要求可供多对多使用。

我已经创建了一个饮食要求来测试这个(素食),但在页面视图中访问它时遇到问题。我认为这是因为创建的 DR 具有 classifiable_type Recipe,这意味着当数据库查询运行时,我无法为我的用户访问此特定实例,因为 SQLite 会自动查找 [= User 的 14=]。此外,就目前而言,每个 DR 似乎都必须属于特定的 UserRecipe,而我希望它们对许多人都可用(或者我在这里错了吗?)

在控制台中,我可以看到 User.first.dietary_requirementsRecipe.first.dietary_requirements,但由于上述原因,在视图中我无法访问它们。

有没有办法绕过这个问题并让我的视图显示用户 DR 和配方 DR 的列表,或者我是否必须调整我的模型才能实现此目的?现在我正计划切换到更详细的 has-many-through 关系,在 User - DR 和 Recipe - DR 之间使用单独的连接表。如果有替代方案,Rails-方式来实现这一点,很高兴听到。

型号代码如下:

食谱

has_many :dietary_requirements, as: :classifiable

用户

has_many :dietary_requirements, as: :classifiable

饮食要求

belongs_to :classifiable, polymorphic: true

您需要饮食要求才能与用户和食谱建立 has_and_belongs_to_many 关系,但是您不能拥有多态 HABTM 关联。您需要创建一个连接模型才能使其正常工作。

更多:HABTM Polymorphic Relationship