0

認証にomniauth-oauth2のみを使用しています(デバイスなし)。サインインしているユーザーとサインインしていないユーザーに異なるルートを定義して、安全なダッシュボードを含めたいと思います。アプリケーションコントローラーにcurrent_userメソッドがありますが、ルートでアクセスできないようです。誰かが私がこれを最もよく行うことができる方法について何かアドバイスがありますか?

アプリケーションコントローラー:

helper_method :current_user

private

    def current_user
        @current_user ||= User.find(session[:user_id]) if session[:user_id]
    end

これは動作しません:

Blog::Application.routes.draw do


 if :current_user
   root :to => "home#show"
 else
   root :to => "home#index"
 end

end
4

1 に答える 1

1

ルート.rbファイルで、条件に基づいてルーティングの制約を指定するだけです

root :to => 'home#show', :constraints => lambda{|req| !req.session[:user_id].blank?}
root :to => 'home#index'

これがuser_idをセッションに保存しているときに役立つことを願っています、これは機能します

于 2013-03-25T07:32:32.363 に答える