2012-09-05 14 views
6

ayuda de mi en esa pregunta:Diseñar authenticate_user

tengo 2 modelos (de administrador y usuario) -> creado con el legado, y tengo post_controller:

y surge la pregunta:

si tengo un modelo (user.rb) -> en mi controlador i puesto que:

before_filter :authenticate_user!, :except => [:show, :index] 

pero tengo 2 modelos y quiero usuario tener acceso a 'mostrar' e 'índice' acción o El controlador de correos y el administrador tienen acceso a todas las acciones.

I y hacer algo por el estilo:

before_filter :logged_in 
. 
. 
. 
    private 
     def logged_in 
      if admin_signed_in? 

      else 
      authenticate_user! 
      end 
     end 

pero quiero cambiar mi cadena:

authenticate_user!

a algo así:

:authenticate_user!, :except => [:show, :index]
pero a excepción se refiere a before_filter

cómo puedo hacerlo (sin la gema 'cancan')

Respuesta

13

Pruebe usar dos filtros anteriores, uno para las acciones de solo administrador, y otro para las acciones de administrador o usuario.

# ensure admin for other actions 
before_filter :check_admin_logged_in!, :except => [:show, :index] 

# ensure user or admin logged in for these actions (:only option is optional) 
before_filter :check_user_logged_in!, :only => [:show, :index] 

private 
    def check_admin_logged_in! # admin must be logged in 
     authenticate_admin! 
    end 
    def check_user_logged_in! # if admin is not logged in, user must be logged in 
     if !admin_signed_in? 
     authenticate_user! 
     end 
    end