我正在建立一个产品数据库。每个产品属于一个类别。只有子类别下的产品。每个产品都有名称,ean_number,价格,宽度,高度,深度,重量等属性。但是有一些基于类别的自定义属性!像energy_class,number_of_programs,sound_volume等!我在谈论这样的事情:
Category
|
|--Category <- This Category have extra information about extra attributes for Products
| |
| |--Category
| |
| |--Product
| |
| |--Product
|
|--Category <- This Category have extra information about extra attributes for Products
|
|--Category
| |
| |--Product
| |
| |--Product
|
|--Category
|
|--Product
|
|--Product
我不确定如何构建它。我需要一个类别和产品的数据库。但是,类别需要知道要添加到产品中的额外属性。所以也许我必须为extra_attributes制作一个表?然后在category和extra_attributes之间建立一个has_many关联?但是,产品也需要了解这种关联!也许我正在思考一个完全错误的方向......!也许我应该制作不同的产品类型?我希望你能引导我!!
答案 0 :(得分:0)
也许你可以使用单表继承来获得你想要的东西。不是为类别设置单独的类,而是使用子类创建产品类型树。这些子类可以为它们允许的额外属性定义验证。
例如:
产品
NamedProduct&lt;产品(定义验证:名称)
ByWeightNamedProduct&lt; NamedProduct
ColorProduct&lt;产品(定义验证:颜色)
CoolColorProduct&lt; ColorProduct