【问题标题】:RoR : Trying to map out complex model relationships [closed]RoR:试图绘制出复杂的模型关系 [关闭]
【发布时间】:2021-06-09 16:28:46
【问题描述】:

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

**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 

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

为进一步清晰而进行了编辑。

【问题讨论】:

  • 我建议在 codereview.stackexchange.com 上发帖 - 堆栈交换系列中的另一个站点。 Stackoverflow 适用于具有特定答案的已定义问题。
  • @michaelward82,这个问题的当前形式还没有准备好Code Review - 它需要有实际实现的代码来审查。
  • @TobySpeight 注意。谢谢

标签: ruby-on-rails ruby postgresql backend


【解决方案1】:

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

您在 product.rb 下将 :grocery_list_products 拼错为 :grocery_lists_products

通过grocery_list_products表以及相关的:throughs等删除对:user的引用……这是多余的,你可以通过grocery_list表得到它。

如果产品列表是通用的,如果产品被更改或删除会怎样?它会自动从列表中删除它吗?如果是这样,那么您将需要在您的has many :grocery_list_products 上添加一个dependent: :destroy。实际上,您应该在大多数情况下考虑dependent: :destroy 逻辑,或者使用“停用”列或其他方式处理它们。

【讨论】:

  • 如果应用中有多个用户怎么办?那么has_many :grocery_list_products through: :grocery_lists 关联适用于user.rb 模型对吗?
猜你喜欢
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多