正しいページにリダイレクトするときに、CanCan に例外メッセージを表示させようとしています。application_controller
次のコードに従って例外を処理しています。
rescue_from CanCan::AccessDenied do |exception|
if current_user # probably not an admin
redirect_to dashboard_index_path, :notice => exception.message
else
redirect_to hello_login_path, :notice=> exception.message
end
end
ただし、ユーザーとしてログアウトし(上記のページのelse部分をトリガーします)、ページにアクセスしようとすると、アクセスする権限がないはずですが、例外メッセージを表示せずにhello_login_pathにリダイレクトします。たとえばdashboard#index
、次の権限を持つに移動しようとすると:
class DashboardController < ApplicationController
def index
#we want to list out all the the projects
@projects = Project.all
authorize! :read, @projects, :message => 'You are not logged in'
@entries = Entry.all
authorize! :read, @entries, :message => 'You are not logged in'
@users = User.all
authorize! :read, @users, :message => 'You are not logged in'
#@entries = Entry.where(:user_id => params[:user_id])
#authorize! :read, @entries
end
end
ページに効果的にリダイレクトされhello#login
ますが、「ログインしていません」というメッセージは表示されません。
ご協力いただきありがとうございます!