2009-04-24 9 views
5

Diseñando una aplicación web con una sección de administrador y una sección pública. Se siente como tener un controlador público solo para "índice" y "mostrar" es un poco redundante. Todas las sugerencias que he leído sugieren un espacio de nombres para el administrador, lo cual está bien. Me pregunto si debería tener un controlador con una acción adicional, decir "list_public" o algo así.Rieles: ¿dos controladores o acciones adicionales?

Soy nuevo en Rails, así que tal vez no estoy preocupado por nada. Simplemente no me gusta la idea de tener todos estos controladores, vistas, ayudantes con el mismo nombre dispersos en todos mis directorios de proyectos.

¿Alguien tiene alguna idea de esto? Gracias por adelantado.

Respuesta

7

Yo diría que tener ambos controladores (uno público y un administrador) es la mejor solución.

Ahora lo que podría hacer es tener ambos controladores llamar al mismo método que realiza las acciones relacionadas en las acciones.

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    # Admin only stuff goes here 
    end 
end 
+0

Gracias, Matt. Esto tiene sentido, solo necesito una verificación de que no es "exagerado". – TMB

6

Como dijo Matt, pero también se puede hacer esto:

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < MyController 
    def show 
    super 
    # Admin only stuff goes here 
    end 
end 

Esto significa que sólo puede concentrarse en los casos más especializados para Admin :: myController en lugar de repetir código.

Cuestiones relacionadas