2009-07-30 3 views
2

Во время публикации новой модели я проверяю аутентификацию через Authlogic. В запросе создания есть before_filter. Он звонит require_user. После успешного создания пользовательского сеанса вызывается метод redirect_back_or_default(default). Проблема заключается в том, что запрос должен быть отправлен на сохраненный uri. Я попытался сохранить метод и ввести его в redirect_to, но он не работает. Есть идеи?rails указать метод для redirect_to

# called before successful authentication with before_filter 
def require_user 
    unless current_user 
    store_location 
    flash[:notice] = "You must be logged in to access this page" 
    redirect_to new_user_session_url 
    return false 
    end 
end 

def store_location 
    session[:return_to] = request.request_uri 
    session[:return_to_method] = request.request_method 
end 

# called after successful authentication 
def redirect_back_or_default(default) 
    redirect_to((session[:return_to] ? session[:return_to] : default), :method => session[:return_to_method]) 
    session[:return_to] = nil 
    session[:return_to_method] = nil 
end 

ответ

0

Вы не можете перенаправить на действие после публикации, а только получить действия.

0

может хранить почтовый объект для последующей обработки после аутентификации, но вы действительно не хотите этого делать.

Почему бы просто не попросить аутентификацию по методу #new, а не (или в дополнение к) #create? Таким образом, пользователь аутентифицируется перед заполнением формы.

+0

Спасибо за ответы. То, что я закончил, - это добавление статуса авторизованной модели. Я разрешаю создавать от неавторизованных пользователей, которые не вошли в систему, а начальное состояние недействительно. Затем в действии create, если они не вошли в него, будет сохранен путь к действию show и перенаправлен на страницу входа/новой пользовательской страницы. Если они не войдут в систему, модель никогда не будет проверена и будет получена в результате рейк-задачи позднее. Если они войдут в систему, они будут перенаправлены обратно на действие show, которое будет «авторизовать» модель, если она была создана ими, и они являются logged_in. –