ruby-on-rails - 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
非常感谢您的建议和提示。谢谢你。
为进一步清晰而编辑。
解决方案
这有许多不同的角度可能会使这变得更加复杂(即:是否会有购物车,或者在路上结账),但只要继续你在这里:
:grocery_list_products
您在:grocery_lists_products
product.rb 下拼写错误
删除对:user
通过grocery_list_products 表以及相关的:throughs 等的引用...这是多余的,您可以通过grocery_list 表获取它。
如果产品列表是通用的,如果产品被更改或删除会怎样?它会自动从列表中删除它吗?如果是这样,那么您将需要dependent: :destroy
在has many :grocery_list_products
. 实际上,您应该考虑其中dependent: :destroy
大多数的逻辑,或者使用“停用”列或其他东西来处理它们。
推荐阅读
- docker - Docker 运行到 Kubernetes 部署 yaml
- javascript - 如何比较来自更改事件的值
- ios - 滑动 ViewController 以关闭 - 顶部的错误
- asp.net - 为什么数据库没有变化
- dialogflow-es - 有没有办法动态激活对话流意图?
- django - Django:添加外键字段后迁移时出现 IntegrityError
- python - 如何处理 Python 日志中的常规消息?
- python - 将缺失的记录插入到由日期列表管理的对象数组中
- css - flexbox - 减少垂直间距
- html - 可滚动的弹性项目 - 如何让宽度等于内容