【问题标题】:Rails polymorphic associations and database queriesRails 多态关联和数据库查询
【发布时间】:2015-04-18 13:44:46
【问题描述】:

我遇到了几个多态关联的问题。我正在尝试通过多态关联将用户和食谱与共享的饮食要求 (DR) 联系起来,并且每个人都可以使用多对多的饮食要求。

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

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

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

型号代码如下:

食谱

has_many :dietary_requirements, as: :classifiable

用户

has_many :dietary_requirements, as: :classifiable

饮食要求

belongs_to :classifiable, polymorphic: true

【问题讨论】:

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


    【解决方案1】:

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

    更多:HABTM Polymorphic Relationship

    【讨论】:

    • 太好了,感谢您的建议 - 很高兴看到存在简单修复时我不会调整所有内容。 @dgilperez,感谢您的编辑,有点累,所以错过了代码元素:/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2019-03-14
    • 2013-07-31
    相关资源
    最近更新 更多