gpt4 book ai didi

ruby-on-rails - 网购商城产品模型的优化设计

转载 作者:行者123 更新时间:2023-12-04 14:44:53 24 4
gpt4 key购买 nike

如何为同一产品设计不同颜色、尺寸、数量和价格的模型。

这是我目前的模型方案,

Product
* Name
* Price
* Color
* Quantity
* Size

如何在同一购物区展示具有不同属性的同一产品?

以A&F购物页面为例,

当您访问此页面时,表示您正在购买 COBBLE HILL TEE
我认为 COBBLE HILL TEE不同颜色和尺寸的产品模型中必须有不同的不同产品实例,对吗?

比如,以下三个实例属于 COBBLE HILL TEE但它们在模型中是不同的实例
 `COBBLE HILL TEE`, `$39`, `Red`, `1`, `XL`
`COBBLE HILL TEE`, `$39`, `White`, `3`, `L`
`COBBLE HILL TEE`, `$37`, `White`, `5`, `S`

所以应该有一个列来标识哪些产品应该被收集到同一个产品中,比如 COBBLE HILL TEE。 , 对 ?

我应该添加一个名为 product_sn 的列吗? , 当这些记录在 product_sn 中具有相同的值时,他们应该聚集在同一个购物页面吗?

抱歉我的英语不好来描述我的问题

enter image description here

最佳答案

我爱modularity在软件中,并相应地创建模型。我想你会从这个想法中受益,所以我会为你解释一下:

型号

我喜欢保留模型以使模型具有可扩展性——因此您可以添加 1,000,000 个项目,并且仍然让它以正确的方式工作。

为此,我们有“孤岛”数据库(我不确定这是否是正确的术语),然后围绕它有“引用”模型。

“筒仓”数据库/模型基本上存储静态数据(例如 productsusers )。引用数据库/型号基本都给silo数据库范围更广——比如添加optionsproductsprofile对于 users .

在你的情况下,我肯定会这样做:

#app/models/product.rb
Class Product < ActiveRecord::Base
has_many :options, as: :optable do
def colours
where name: "colour"
end
end
end

#app/models/option.rb
Class Options < ActiveRecord::Base
belongs_to :optable, polymorphic: true
end

架构:
#products
id | name | SKU | stock | etc | etc | created_at | updated_at

#options
id | optable_type | optable_id | name | value | created_at | updated_at

--

协会

这是 polymorphic association (因此您可以将 options 模型与其他不相关的模型一起使用):

enter image description here

这意味着您将能够调用:
@product = Product.find params[:id]
@product.options #-> returns all `Option` records for `product` (`price`, `size`, `etc`)

如果你设置正确,你应该能够做到这一点:
#config/routes.rb
resources :products, only: :show #-> domain.com/products/14

#app/controllers/products_controller.rb
class ProductsController < ActiveRecord::Base
def show
@product = Product.find params[:id]
end
end

#app/views/products/show.html.erb
<%= @product.name %>
<% @product.options.each do |option| %>
<%= option.size %>
<%= option.price %>
<%= option.colour %>
<% end %>

如果您想调用 productcolour选项,然后您可以执行以下操作:
@product = Product.find params[:id]
@product.options.colours #-> will output all colours for the product

注意事项

我的代码的主要警告之一是 options我提供的内容没有任何结构。如果您想拥有一个特定的 set产品的选项(如 sizecolourquantity 对于特定产品,您可能希望在 self-referential 模型中使用 Option association,如果您愿意,我可以这样做

关于ruby-on-rails - 网购商城产品模型的优化设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24102653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com