1

为了练习,我正在写一个购物网站,我们有桌子UserItem. 一个用户显然是has_many物品(当他们被添加到他们的购物篮中时),但是即使许多用户在他们的购物篮中都有相同的物品,它belongs_to也是如此?User

此外,如果我想要一个用户添加到他们的购物篮的项目列表,以及他们查看过的项目列表(用于根据搜索提出建议),最好有一些“通过”表:BasketViewed

4

2 回答 2

2

当您有这种多对多关系时,您可以使用 HABTM 模式:

Class User...
has_and_belongs_to_many :items

然而,大多数时候网上商店使用订单来跟上用户购买的物品。这意味着一个 'user' 'has_many' 'orderlines' ,一个 'item' 'has_many' 'orderlines' ,一个 'orderline' 'belongs_to' 一个 'user' 和一个 'item'。

也许您的订单只是项目的副本,并且没有直接链接,因为您不想在处理完订单后更改它们。这实际上取决于您商店的重点,哪种方案适合您的需求。

试着在网上找一些例子,想想你想如何处理物品、订单和购物篮。

于 2013-02-16T20:54:28.363 回答
0

我习惯于把不一样的东西分开,即使关系是一对一的。所以首先我会推荐来自购物篮的用户(1:1 关系)。

之后,一个篮子包含许多项目,项目可以在多个篮子中(m:n 关系)。确保,也许用户喜欢多次购买同一物品。

视图可以实现为用户和项目之间的链接表:用户有很多视图,项目有很多视图,但一个视图总是链接到一个用户和一个项目。

于 2013-02-16T21:51:58.073 回答