RoR:尝试绘制出复杂的模型关系
RoR : Trying to map out complex model relationships
我正在尝试构建一个用户独有的购物清单应用程序,因为系统中会有多个用户。用户可以创建自己的购物清单,在产品页面部分,用户可以 select 产品并将其保存到用户创建的列表中(将有一个下拉菜单 selection 在“添加到列表”按钮旁边,显示要在哪个列表中保存 selected 产品)。我最初已经绘制出关系模型,但是,我仍然不确定我是否遗漏了任何东西并希望提出改进建议。这就是我所做的,
**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
非常感谢您的建议和提示。谢谢。
为进一步清楚起见进行了编辑。
这有许多不同的角度,可能会使事情变得更复杂(即:路上是否会有购物车或收银台),但请继续您在此处拥有的内容:
您在 product.rb
下将 :grocery_list_products
拼错为 :grocery_lists_products
通过grocery_list_products删除对:user
的引用table以及相关的:throughs等...它是多余的,你可以通过[=27得到它=] table.
如果产品列表是通用的,如果产品被更改或删除会怎样?它会自动将其从列表中删除吗?如果是这样,那么您需要在 has many :grocery_list_products
上添加一个 dependent: :destroy
。实际上你应该考虑其中大多数的 dependent: :destroy
逻辑,或者用 'deactivated' 列或其他东西来处理它们。
我正在尝试构建一个用户独有的购物清单应用程序,因为系统中会有多个用户。用户可以创建自己的购物清单,在产品页面部分,用户可以 select 产品并将其保存到用户创建的列表中(将有一个下拉菜单 selection 在“添加到列表”按钮旁边,显示要在哪个列表中保存 selected 产品)。我最初已经绘制出关系模型,但是,我仍然不确定我是否遗漏了任何东西并希望提出改进建议。这就是我所做的,
**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
非常感谢您的建议和提示。谢谢。
为进一步清楚起见进行了编辑。
这有许多不同的角度,可能会使事情变得更复杂(即:路上是否会有购物车或收银台),但请继续您在此处拥有的内容:
您在 product.rb
下将:grocery_list_products
拼错为 :grocery_lists_products
通过grocery_list_products删除对:user
的引用table以及相关的:throughs等...它是多余的,你可以通过[=27得到它=] table.
如果产品列表是通用的,如果产品被更改或删除会怎样?它会自动将其从列表中删除吗?如果是这样,那么您需要在 has many :grocery_list_products
上添加一个 dependent: :destroy
。实际上你应该考虑其中大多数的 dependent: :destroy
逻辑,或者用 'deactivated' 列或其他东西来处理它们。