2009-12-15 61 views
1

您好我在我的rails電子商務應用中實現添加到購物車功能時遇到問題。這裏我不是在談論檢出功能。只需「添加到購物車」。可以將項目添加到購物車,而無需用戶登錄其帳戶。一旦用戶完成添加到購物車,然後在退房之前用戶將登錄。我的問題是什麼是最好的方式來存儲添加到購物車的物品。我正在嘗試使用會話。如果用戶添加任何數量的產品,只需一個產品即可。但是如果用戶檢出多個數量不同的項目,如何臨時存儲這些信息。我需要一個數據結構來存儲這些信息,但不知道要使用哪種數據結構。 我的意思是這樣:如何在Rails中實現基於會話的「添加到購物車」功能

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

等等.....

使用散列我可以存儲一個項目,但如何存儲多個項目? 使用數據庫表,我可以做到這一點,但如果用戶離開項目添加到購物車,但沒有退房如何從表中刪除這些記錄?

我被困在這裏。 任何幫助,將不勝感激。 謝謝

回答

0

通常,您應該使用會話ID和數據庫來存儲產品。這使會話信息最小化(只是ID)併爲您提供最大的靈活性。 IMO認爲將這樣的數據結構放入會話存儲區是個不錯的主意:如果您以後決定更改數據結構會怎麼樣?您必須同時支持數據結構的舊版本和新版本。

正如您所指出的,基於數據庫的解決方案的問題在於,您需要清除數據庫中未購買的項目。這通常是定期進行的(例如清理X天以上的購物車),其中時間範圍可以基於數據庫的大小(如果購物車在3個月?6個月後清除,它的增長有多大)以及人們是否很可能在未來的某個時候返回(他們是否會在3個月後返回?6個月?)。

如果您決定存儲在會話的信息,那麼你可能需要做一些類型的簡單序列,例如:

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

這裏唯一的限制是會話數據多長時間能(絕對增加一個長度檢查)。