Rails - Deux contrôleurs ou ajout d'actions?
-
16-09-2019 - |
Question
La conception d'une application Web avec une section d'administration et une section de public face. On se sent comme avoir un contrôleur public face juste pour « index » et « show » est un peu redondant. Toutes les suggestions que j'ai lu suggèrent un espace de noms pour admin, ce qui est bien. Je me demande si je devrais avoir un contrôleur avec une action d'addition, dites « list_public » ou quelque chose comme ça.
Je suis nouveau avec Rails, alors peut-être que je suis préoccupé par rien. Je n'aime pas l'idée d'avoir tous ces contrôleurs, vues, aides avec le même nom éparpillés dans mes répertoires de projet.
Quelqu'un a une idée à ce sujet? Merci à l'avance.
La solution
Je dirais d'avoir les deux contrôleurs (un public et un admin) est la meilleure solution.
Maintenant, ce que vous pouvez faire est d'avoir à la fois les contrôleurs appellent la même méthode qui effectue les actions connexes dans les actions.
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
Autres conseils
Comme Matt dit, mais vous pouvez aussi faire ceci:
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
Cela signifie que vous pouvez simplement se concentrer sur les cas plus spécialisés pour Admin :: MyController plutôt que le code à répéter.