DataMapper关联依赖于两列

时间:2011-09-07 01:57:34

标签: ruby datamapper

我有一张产品表,其中包含SKU,Name等属性

由于各种功能取决于类别,我似乎需要为每个类别的产品设置单独的表格。

说我有靴子,工具和帽子的桌子/类

我希望(除非有更好的方法)将我的产品表加入/关联到适当的其他表(取决于类别)?

Products Table  

id | Name   | SKU | Category(Table) | CategoryTableForeignKey
----------------------------------------------------------------------
1  | boot1  | 123 | Boots           | 2
2  | knife1 | 345 | Tools           | 42

-

Boots Table

id | product_id   | Size | Width | Color | Sex
----------------------------------------------------------------------
2  | 1            | 9.5  | Wide  | Olive | Male

-

Tools Table

id | product_id   | length | Fixed | Coating | Etc
----------------------------------------------------------------------
42 | 2            | 4.5    | False | ...     | ...

我不确定如何使用DataMapper类。

理想情况下,我希望能够:

my_boot = Boots.get(1)

my_boot.product.sku

编辑: dkubb在我的代码中指出了一个漏洞。

2 个答案:

答案 0 :(得分:1)

当您使用has()时,您所说的是外键位于其他模型中。如果您希望外键位于与您要使用的当前模型关联的表中belongs_to

答案 1 :(得分:1)

class Product
  include DataMapper::Resource
  #descripe product properties ...

  has n,  :boots
end

Class Boot
  include DataMapper::Resource
  #describe boot properties ...

  belongs_to :product
end

关于DataMapper关联:http://datamapper.org/docs/associations.html