У меня есть приложение rails, которое использует Devise, с моделью User, без области.Я также добавил в приложение гем activeadmin, Active Admin - это гем, используемый для добавления панели администратора в ваше приложение.Он использует Devise для входа в систему пользователей и создает отдельную модель admin_user для администраторов.
Я разрешаю анонимным, не авторизованным пользователям создавать корзины покупок, создавая session[:cart_id]
.Если пользователь входит в систему, я хочу связать пользователя с корзиной, что-то вроде
Cart.find(session[:cart_id]).user = current_user
Я планировал использовать обратные вызовы Wardens обратные вызовы wardens , чтобы это реализовать, что-то вроде этого:
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
У кого-нибудь есть идеи, что происходит?
Я посмотрел на связанные вопросы, но без помощи:
Как получить доступ к сеансу из Warden / Devise after_authentication callback в Rails
Где следуетобратные вызовы хранителей помещаются в приложение rails?