2010-04-07 8 views
5

¿Cuál es el formato/estructura típico para crear un área administrativa en una aplicación Rails?Crear áreas de administración en rieles: preguntas generales

Específicamente Stumped en las inmediaciones de los siguientes temas:

  • ¿Cómo lidiar con situaciones en las que están disponibles para el público y la administración de los recursos de un modelo? es decir, un modelo de usuario donde cualquiera puede crear usuarios, iniciar sesión, etc. pero solo el administrador puede ver a los usuarios, eliminarlos/actualizarlos, etc.
  • ¿Cuál es la convención adecuada para el enrutamiento?
  • ¿Cómo se estructuran los controladores?
  • ¿Los controladores duplicados se consideran correctos? es decir, una versión de administrador y la versión no de administrador?

¡Gracias!

Respuesta

4

Puede tener 2 controladores, uno para la parte pública y otra para el administrador y el uso de espacios de nombre del administrador:

map.namespace(:admin, :path_prefix => 'settings', :name_prefix => 'admin_') do |admin| 
    admin.resources :users 
end 

sería asignar a /configuración/usuarios y el controlador tendría que ser prefijado por Admin:: como Admin::UsersController, también el archivo del controlador debe colocarse en una carpeta admin bajo la aplicación/controladores dir.

  • Sí, si hacen más clara su código, habría un gran lío si por ejemplo usted tenía el mismo controlador para admin y vistas públicas, que a su vez tiene que hacer diferentes plantillas de vista sobre la base de si un administrador o usuario normal accede a ellos. También see here for more information.
+0

Damien, gracias por responder. Pregunta sobre el segundo punto del enrutamiento RE. ¿Cómo afecta esto su uso de los generadores del controlador? AND ¿Andamio en absoluto? –

+1

También puede determinar la generación del controlador ... 'script/generate controller admin/users'. –

0

Además de la creación de un espacio de nombres admin en mis rutas, yo uso el declarative_authorization plug-in, que le permite definir los roles de los usuarios y definir los controles de acceso en las acciones del controlador, así como los atributos del modelo. Si un usuario intenta acceder a una acción que no tiene permiso para, el complemento redirigirá su solicitud. Manera realmente ordenada de manejarlo y ayuda a proporcionar un nivel granular de seguridad.

Existen otros complementos en el ecosistema de Rails que ofrecen una funcionalidad similar.

2

Hay una serie de Railscasts que muestra un enfoque que evita tener un área de administración separada mediante el uso de condicionales en las vistas y los controladores: Where Administration Goes.

Esto puede no ser adecuado para su caso de uso, pero vale la pena verlo.

Cuestiones relacionadas