【发布时间】: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