2012-03-23 3 views
0

Я пытаюсь использовать вспомогательный метод контроллера Devise signed_in? чтобы проверить, уже ли пользователь signed_in, если да, то я хочу перенаправить на определенную страницу.Придумайте, как добавить подписанный флажок в пользовательский контроллер сеанса?

Я пробовал это, но signed_in? метод всегда возвращает true, как я могу это сделать?

class SessionsController < Devise::SessionsController 
    def new 
    redirect_to root_url 
    end 

    def create 
    if signed_in?(resource_name) 
     redirect_to where_-_want_to_url 
    else 
     resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure") 

     return sign_in_and_redirect(resource_name, resource) 
    end 
    end 

    def sign_in_and_redirect(resource_or_scope, resource=nil) 
    scope = Devise::Mapping.find_scope!(resource_or_scope) 
    resource ||= resource_or_scope 
    sign_in(scope, resource) unless warden.user(scope) == resource 
    return render :json => {:success => true, :redirect => stored_location_for(scope) || after_sign_in_path_for(resource)} 
    end 

    def failure  
    return render :json => { :success => false } 
    end 

end 
+0

Для чего вы хотите это использовать? Вы просто хотите отобразить другую ** домашнюю страницу ** в зависимости от того, вошел ли пользователь в систему или нет? – Ashitaka

+0

Нет, есть ситуация, когда страница входа в систему проигнорирована, но на самом деле пользователь уже вошел в систему. Поэтому я хочу сделать перенаправление костюма – Rn2dy

ответ

0

Вы хотите, чтобы жить в помощнике.

Когда пользователь входит в систему, сохранить пользователя как CURRENT_USER

self.current_user = user 

Чтобы проверить, если пользователь подписан вы можете воспользоваться

def signed_in? 
    !current_user.nil? 
end 

От Майкла Hartl http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec:current_user

Редактировать :

Извините, я просто прочитал редактирование. Ты хотел, чтобы Дэвис.

Как def 'signed_in?' выглядит как?

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

0

Вы пробовали if user_signed_in?

Теперь, я действительно не уверен, что вы пытаетесь сделать, но я бы не определить свой маршрут таким образом в контроллере. Я бы сделал что-то вроде этого:

# config/routes.rb 
authenticated :user do 
    root :to => where_I_want_to_url 
end 
root :to => 'welcome#index' 
Смежные вопросы