Schienen - zwei Controller oder das Hinzufügen von Aktionen?
-
16-09-2019 - |
Frage
Entwerfen einer Web-App mit einem Admin-Bereich und einer öffentlich zugänglichen Seite. Es fühlt sich an wie eine öffentlich zugängliche Steuerung mit nur für „Index“ und „Show“ ist ein bisschen überflüssig. Alle Vorschläge, die ich gelesen habe, deuten darauf hin, einen Namespace für admin, was in Ordnung ist. Ich frage mich nur, wenn ich einen Controller mit einem Zusatz Aktion haben sollte, sagen Sie „list_public“ oder so ähnlich.
Ich bin neu mit Rails, vielleicht bin ich einfach nichts besorgt. Ich mag es nicht nur die Idee, all diese Controller, Ansichten, Helfer mit dem gleichen Namen am ganzen Projektverzeichnissen verteilt.
Wer noch keine Einsicht dazu? Vielen Dank im Voraus.
Lösung
Ich würde sagen, beide Controller mit (einem öffentlichen und einem admin) ist die beste Lösung.
Nun, was Sie tun können, ist sowohl die Controller die gleiche Methode aufrufen, die die damit verbundenen Aktionen in den Aktionen der Fall ist.
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
Andere Tipps
Wie Matt sagte, aber Sie können dies auch tun:
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
Das bedeutet, dass Sie nur auf den spezielleren Fällen für Admin konzentrieren können :: MyController anstatt Code zu wiederholen.