首页 > 解决方案 > RoR:试图绘制出复杂的模型关系

问题描述

我正在尝试构建一个用户独有的购物清单应用程序,因为系统中将有多个用户。用户可以创建自己的购物清单,并且在产品页面部分,用户可以选择产品并将其保存到用户制作的列表中(“添加到列表”旁边将有一个下拉选择" 按钮显示将所选产品保存在哪个列表中)。我最初绘制了关系模型,但是我仍然不确定我是否遗漏了任何东西,并希望提出改进建议。这就是我所做的,

**user.rb**
has_many :grocery_lists
has_many :grocery_list_products through: :grocery_lists

**grocery_list.rb**
belongs_to :user
has_many :grocery_list_products
has_many :products through: :grocery_list_products

**product.rb**
has_many :grocery_lists
has_many :grocery_lists_products

**grocery_list_product.rb** #to connect grocery_list with product
belongs_to :product
belongs_to :grocery_list
belongs_to :user 

非常感谢您的建议和提示。谢谢你。

为进一步清晰而编辑。

标签: ruby-on-railsrubypostgresqlbackend

解决方案


这有许多不同的角度可能会使这变得更加复杂(即:是否会有购物车,或者在路上结账),但只要继续你在这里:

:grocery_list_products您在:grocery_lists_productsproduct.rb 下拼写错误

删除对:user通过grocery_list_products 表以及相关的:throughs 等的引用...这是多余的,您可以通过grocery_list 表获取它。

如果产品列表是通用的,如果产品被更改或删除会怎样?它会自动从列表中删除它吗?如果是这样,那么您将需要dependent: :destroyhas many :grocery_list_products. 实际上,您应该考虑其中dependent: :destroy大多数的逻辑,或者使用“停用”列或其他东西来处理它们。


推荐阅读