Sto utilizzando CanCanCan, Devise & Rolifica.CanCanCan genera un errore regolare di Rails su un'eccezione piuttosto che un messaggio flash come ho specificato
mio ApplicationController
assomiglia a questo:
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_filter :new_post
rescue_from CanCan::AccessDenied do |exception|
redirect_to root_url, :alert => exception.message
end
def new_post
@post = Post.new
end
end
mio routes.rb
assomiglia a questo:
authenticate :user, lambda { |u| u.has_role? :admin or :editor } do
get 'newsroom', to: 'newsroom#index', as: "newsroom"
get 'newsroom/published', to: 'newsroom#published'
get 'newsroom/unpublished', to: 'newsroom#unpublished'
end
# truncated for brevity
root to: "posts#index"
Questo è il mio ability.rb
che è rilevante:
elsif user.has_role? :member
can :read, :all
cannot :read, :newsroom
Così, quando sono entrato in come :member
, e cerco di andare a /newsroom
, ottengo questo errore:
NameError at /newsroom
uninitialized constant Newsroom
Invece di essere reindirizzato al root_url
con una :alert
come mi sarei aspettato.
Non so cosa sta succedendo qui.
Modifica 1
Per quello che vale, ho solo questo quando aggiungo questo al mio NewsroomController
:
authorize_resource
vuol provocano un errore se si accede/newsroom loggued come amministratore – Typpex
@Typpex sì, d oes provoca un errore se accedo a '/ newsroom' loggato come admin. – marcamillion