Rails中的唯一会话ID

时间:2014-11-14 18:46:36

标签: ruby-on-rails ruby devise

我为我正在制作的webapp制作了购物车模型。它只是轨道型号上的标准红宝石。

它允许用户将产品添加到购物车,但只有当他们是添加该项目的用户时才向他们显示产品。但是,我想让尚未登录的用户将商品添加到购物车中。

现在我正在使用设计,因此我可以检查current_user,并将该购物车项目分配给该用户。但是有一个类似的唯一会话ID或我可以用来模拟用户的任何东西。所以我只显示添加到一个人的项目?

原因是我希望我的用户在要求他们登录并创建帐户之前尽可能多地完成订购流程。

由于

2 个答案:

答案 0 :(得分:4)

一种简单的方法是创建购物车,然后将该标识符添加到会话中,而不管其是否已登录状态。

例如:

@shopping_cart = ShoppingCart.create(user: current_user)
session[:shopping_cart_id] = @shopping_cart.id

稍后您可以将当前购物车(如果有)检索为before_action处理程序。

答案 1 :(得分:0)

我处理过类似的问题。我做的是,我使用了session_id。首先,您需要一个表(例如product_list)来保存product列表以用于临时目的。将每个productsession_id一起填充到此表中。这有助于您确定product_listactive user的关联。在结帐时,将记录从product_list复制到您的shopping_cart表格,并从product_list删除记录。

试试这个,它可能会帮助您解决当前的问题。