基于belongs_to模型的额外列模型

时间:2011-03-26 22:17:40

标签: ruby-on-rails activerecord relationship

我正在建立一个产品数据库。每个产品属于一个类别。只有子类别下的产品。每个产品都有名称,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关联?但是,产品也需要了解这种关联!也许我正在思考一个完全错误的方向......!也许我应该制作不同的产品类型?我希望你能引导我!!

1 个答案:

答案 0 :(得分:0)

也许你可以使用单表继承来获得你想要的东西。不是为类别设置单独的类,而是使用子类创建产品类型树。这些子类可以为它们允许的额外属性定义验证。

例如:

产品

NamedProduct&lt;产品(定义验证:名称)

ByWeightNamedProduct&lt; NamedProduct

ColorProduct&lt;产品(定义验证:颜色)

CoolColorProduct&lt; ColorProduct