Rails 多态关联和数据库查询
Rails polymorphic associations and database queries
我对几个多态关联有疑问。我正在尝试通过多态关联将用户和食谱连接到共享的饮食要求 (DR),饮食要求可供多对多使用。
我已经创建了一个饮食要求来测试这个(素食),但在页面视图中访问它时遇到问题。我认为这是因为创建的 DR 具有 classifiable_type
Recipe
,这意味着当数据库查询运行时,我无法为我的用户访问此特定实例,因为 SQLite 会自动查找 [= User
的 14=]。此外,就目前而言,每个 DR 似乎都必须属于特定的 User
或 Recipe
,而我希望它们对许多人都可用(或者我在这里错了吗?)
在控制台中,我可以看到 User.first.dietary_requirements
和 Recipe.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
我对几个多态关联有疑问。我正在尝试通过多态关联将用户和食谱连接到共享的饮食要求 (DR),饮食要求可供多对多使用。
我已经创建了一个饮食要求来测试这个(素食),但在页面视图中访问它时遇到问题。我认为这是因为创建的 DR 具有 classifiable_type
Recipe
,这意味着当数据库查询运行时,我无法为我的用户访问此特定实例,因为 SQLite 会自动查找 [= User
的 14=]。此外,就目前而言,每个 DR 似乎都必须属于特定的 User
或 Recipe
,而我希望它们对许多人都可用(或者我在这里错了吗?)
在控制台中,我可以看到 User.first.dietary_requirements
和 Recipe.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