Railsでネットショップを開発しております。
ユーザー1人に対してカートを1つ設定するロジックにしたいのですが、
カート機能のところで問題があり、投稿しました。
問題は下記になります。
・ユーザーAがサインアップする
・新規にカート(cart_id=1)が作成される
・ユーザーAがログアウトする
・ユーザーBがサインアップする
◆cart_id=2で新規にカートが作成されて欲しいが、
cart_id=1が代入されている状態で「過去のカートが存在する」と判断され、
ユーザーBにcart_id=1のカートが設定される
(新規にカートが作成されない)
ログインするユーザーが変わっているのにsessionのcart_idが保持されてるように思えます。
これまでにカートを作成していない(sessionにcart_idが存在しない)場合はそのユーザーに対して新たに
カートを作成し、これまでにカートを作成している(sessionにcart_idが存在する)場合はcart_idを元にカートモデルを検索し設定します。
ruby
1#現在のユーザーが持つカートを設定する 2def current_cart 3 begin 4 Cart.find(session[:cart_id]) 5 rescue ActiveRecord::RecordNotFound 6 cart = Cart.create 7 session[:cart_id] = cart.id 8 end 9end
ログアウトした場合はセッションを削除しています。
def log_out session.delete(:user_id) @current_user = nil #session[:cart_id] = nil end
上記でsession[:cart_id] = nilをすると、
同じユーザーがログイン、ログアウトを繰り返すたびにカートが
新規に作成されてしまい、ダメでした。
ユーザー1人に対してカートを1つ持たせるにはどのようなロジックにすればよいでしょうか?
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/07 00:05
2019/10/07 13:52