gpt4 book ai didi

ruby-on-rails - 在 Rails 数据库中实现基于父类(super class)子类模型设计的最佳方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:59:22 24 4
gpt4 key购买 nike

假设我正在为一家在线商店设计数据库,他们在那里销售不同种类的商品。每个项目都有自己独特的属性,除了一些共同点,如价格、制造商等。因此它可以分为父类(super class)(公共(public)字段)和子类(不同字段)

假设我有以下表格:

Product manufacturer:decimal 
Pen ink:string
Shirt size:int

PenShirt 表中创建一个 product_id 字段可以解决我的问题,但是还有其他好的方法吗?并且在这里将它分成父类(super class)和子类真的是个好主意吗?

最佳答案

这种情况下的常用方法是使用单表继承(STI)。 Product 将是基类:

class Product < ActiveRecord::Base
end

Pen/Shirt子类:

class Pen < Product
end

class Shirt < Product
end

通常所有的信息都存储在基础 Product 表中(这就是它是单表继承的原因)并借助特殊的 type 列(当然你衬衫的 ink 字段中会有 nil

如果您只想在Product 表中存储公共(public)字段,您可以为子类创建单独的表。然后,我认为您不仅需要指定 type,还需要指定 specific_product_id 之类的内容,以便能够提取有关产品的完整信息(这将是在 STI 和 Polymorphic Association 之间)。所以它会是这样的:

Product
id (product_fields) type specific_product_id
1 ... Pen 2
2 ... Shirt 7

Pen
id (pen_fields)
2 ...

Shirt
id (shirt_fields)
7 ...

决定权在你。

关于ruby-on-rails - 在 Rails 数据库中实现基于父类(super class)子类模型设计的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30818182/

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