产品设计模式

时间:2011-03-31 20:08:25

标签: ruby-on-rails design-patterns

我有以下方案要实施:有产品注册,但这个产品显然有一些类别。例如,它将是男性或女性,它将是配件或鞋类或包,例如,在配件内部,它将是带子项或钱包,这取决于管理员的愿望。但我不知道如何实现这个......让某人知道如何做到这一点。

2 个答案:

答案 0 :(得分:2)

您希望产品和类别之间存在多对多关系。这意味着每个产品可以有多个类别,每个类别可以有多个产品。

此外,您希望能够组合类别,使其具有树状结构。为此,每个类别应引用父类别(在关系模式中)和/或几个子类别(在代码中)。如果您希望某个类别能够拥有多个父类别,那么您将再次查看多对多关系。

答案 1 :(得分:1)

马丁建议的一个可能的替代方案就是使用标签。标签以其“扁平”,非结构化关系而闻名,如果您需要“嵌套”类别,这可能是一种负担。但是,有一个标记库,act-as-taggable-on,允许嵌套标记。

因此,不是男性,女性,配饰,钱包,皮带等扁平结构,而是性别:男性,性别:女性,配饰:钱包,配饰:皮带等。逻辑上它与马丁的建议相同,但是使用标记库可以节省大量编码。