Rails多态关联和数据库查询

时间:2015-02-17 18:36:52

标签: sql ruby-on-rails many-to-many has-many-through polymorphic-associations

我遇到了几个多态关联的问题。我试图通过多态关联将用户和食谱连接到共享膳食要求(DR),并且每个人都有多对多的饮食要求。

我已经创建了一个膳食要求来测试这个(素食),但是在页面视图中访问它时遇到了麻烦。我认为这样做的原因是创建的DR具有classifiable_type Recipe,这意味着当数据库查询运行时,我无法访问此用户的特定实例,因为SQLite会自动查找{{1} 1 {} classifiable_type。此外,按照目前的情况,每个DR似乎必须属于特定的UserUser,而我希望它们都可供许多人使用(或者我错了吗?)

在控制台中,我可以看到RecipeUser.first.dietary_requirements,但在视图中我无法访问这些,因为上述原因。

有没有办法解决这个问题并让我的视图显示用户DR和配方DR的列表,还是我必须调整我的模型来实现这一目标?现在我打算切换到更详细的has-many-through关系,在User-DR和Recipe-DR之间使用单独的连接表。如果有另一种选择,Rails方式来实现这一目标,那么听到它会很棒。

以下型号代码:

配方

Recipe.first.dietary_requirements

用户

has_many :dietary_requirements, as: :classifiable

饮食要求

has_many :dietary_requirements, as: :classifiable

1 个答案:

答案 0 :(得分:1)

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

更多:HABTM Polymorphic Relationship