1

嗨,我在我的 rails 电子商务应用程序中实现添加到购物车功能时遇到问题。这里我不是在谈论结帐功能。只需“添加到购物车”。无需用户登录其帐户即可将商品添加到购物车。一旦用户完成添加到购物车,然后在结帐之前用户将登录。我的问题是存储添加到购物车的这些项目的最佳方式是什么。我正在尝试使用会话。如果用户将任意数量的产品添加到购物车中,我可以轻松实现这一点。但是如果用户签出多个不同数量的项目,如何临时存储信息。我需要一个数据结构来存储这些信息,但不知道要使用哪个数据结构。我的意思是这样的:

Session_id | product_id | quantity
wisidiri4i | 1234       | 3    
349sksksks | 3452       | 6

等等.....

使用哈希我可以存储一个项目,但如何存储多个项目?使用数据库表,我可以做到这一点,但是如果用户离开时将物品添加到购物车但没有结帐,如何从表中删除这些记录?

我被困在这里。任何帮助,将不胜感激。谢谢

4

1 回答 1

1

通常,您应该使用会话 ID 和数据库来存储产品。这使会话信息(仅 ID)保持最少,并为您提供最大的灵活性。IMO 将这样的数据结构放入会话存储中是个坏主意:如果您决定稍后更改数据结构怎么办?您必须同时支持旧版本和新版本的数据结构。

正如您所指出的,基于 db 的解决方案的问题在于,有时您需要从数据库中清除未购买的物品。这通常是定期进行的(例如,超过 X 天的购物车被清除),其中时间范围可以基于数据库的大小(如果购物车在 3 个月后被清除,它会增长多大?6 个月)以及人们是否可能会在未来某个时间点返回(他们会在 3 个月后返回吗?6 个月?)。

如果您决定将信息存储在会话中,那么您可能想要进行某种类型的简单序列化,例如:

Session_id  |  Items
892jsls098s |  sku1:3,sku2:4,sku3:2

这里唯一的限制是会话数据可以有多长(肯定会添加长度检查)。

于 2009-12-16T03:26:02.633 回答