Это было бы проще для меня, если бы Ruby был моим первым языком, но в любом случае вот мой вопрос:
Используя Rails 3.1, я пытаюсь получить доступ к некоторым обратным вызовам Warden Manager с помощью Devise для созданияновая «корзина» каждый раз, когда пользователь входит в систему. Я помещаю эту логику в свой ApplicationController.Проблема в том, что когда я создаю корзину, я хочу дать ей идентификатор пользователя.Я пытался использовать вспомогательный метод Devise current_user, но он не работает.
Самое главное, я хочу знать, почему я не могу получить доступ к своим вспомогательным методам или методам, определенным в ApplicationController, извнутри блока Warden :: Manager.Но я также хочу знать, как я могу отредактировать свой код, чтобы я мог использовать метод Devise current_user (и мой метод current_cart, показанный ниже) в блоке без ошибок, как при вызове перечисленного ниже.Вот мой код:
class ApplicationController < ActionController::Base
helper :all
helper_method :current_user
protect_from_forgery
before_filter :fetch_categories
.
.
.
def current_cart
@current_cart ||= Cart.find_by_user_id(current_user.id)
end
Warden::Manager.after_authentication do |user, auth, opts|
Cart.create!(:user_id => current_user.id)
end
end
Вот ошибка:
NameError in Devise::SessionsController#create
undefined local variable or method `current_user' for ApplicationController:Class