ユーザーモデルを使用し、スコープのないDeviseを使用しているレールアプリがあります。アプリに activeadmin gem も追加しました。Active Admin は、アプリケーションに管理ダッシュボードを追加するために使用される gem です。ユーザーのログインに Devise を使用し、管理者用に別の admin_user モデルを作成します。
ログインしていない匿名のユーザーがショッピング カートを作成し、session[:cart_id]
. ユーザーがログインした場合、ユーザーをカートに関連付けたい
Cart.find(session[:cart_id]).user = current_user
私は Wardens callbacks wardens callbacksを使用してこれを実装することを計画していました。
Warden::Manager.after_set_user :scope => :user do |user, auth, opts|
Cart.find(session[:cart_id]).user = user
end
ただし、それを行うとエラーが発生します。
<% unless user_signed_in? %>
エラーをスローします:admin_user user is not logged in
誰が何が起こっているのか考えていますか?
関連する質問を見てきましたが、助けにはなりません:
Rails で Warden/Devise after_authentication コールバックからセッションにアクセスする方法