gpt4 book ai didi

ruby-on-rails - 如何将我的购物车链接到用户 session ?

转载 作者:行者123 更新时间:2023-12-04 05:55:27 24 4
gpt4 key购买 nike

我是编程新手,我正在尝试让购物车在我的应用程序中运行,该购物车链接到用户 session 。因此每个用户都可以拥有自己的购物车,并且没有人可以查看其他人的购物车。

多亏了 Railscasts,我有了一个工作车,但它目前是在它自己的 session 中创建的。因此,您是否以不同用户身份登录并不重要,只有一个购物车在使用并且所有用户共享。

它目前正在这样创建:

应用 Controller

class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details
helper_method :current_user
helper_method :current_cart

def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end

def current_cart
if session[:cart_id]
@current_cart ||= Cart.find(session[:cart_id])
session[:cart_id] = nil if @current_cart.purchased_at
end
if session[:cart_id].nil?
@current_cart = Cart.create!
session[:cart_id] = @current_cart.id
end
@current_cart
end
end

订单项 Controller

class LineItemsController < ApplicationController
def create
@product = Product.find(params[:product_id])
@line_item = LineItem.create!(:cart => current_cart, :product => @product, :quantity => 1, :unit_price => @product.price)
flash[:notice] = "Added #{@product.name} to cart."
redirect_to current_cart_url
end
end

我已经将 user_id 添加到购物车模型并设置用户 has_one cart 和 cart belong_to a user 但我无法弄清楚创建购物车的方式需要改变什么才能真正获得它去工作。

编辑 - session Controller

  def create
user = User.authenticate(params[:username], params[:password])
if user
session[:user_id] = user.id
current_cart.user = current_user
current_cart.save
redirect_to root_path, :notice => "Welcome back!"
else
flash.now.alert = "Invalid email or password"
render "new"
end
end

def destroy
session[:user_id] = nil
redirect_to root_path, :notice => "Logged out!"
end

非常感谢任何帮助!

最佳答案

购物车与 session 相关联,因此并非所有用户都会共享它,它对于创建它的浏览器 session 来说是唯一的 - 本质上是为访问您的 LineItemsController#create 方法的每个浏览器 session 创建一个购物车。

这样做通常是为了允许在用户登录或注册之前创建购物车,从而减少实际向购物车添加商品时的摩擦。

如果您想将购物车与用户相关联,那么您可以在他们登录或注册时执行此操作。如果您添加了关系,那么这应该很简单:

current_cart.user = current_user
current_cart.save

关于ruby-on-rails - 如何将我的购物车链接到用户 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com