Gibt es einen Nachteil bei der Verwendung von Singularnamen für Controller und Helfer? Darauf scheint sich nichts zu stützen. Es scheint sogar, dass Helfer nicht die gleiche Wahl zwischen Singular und Plural treffen müssen wie ihre entsprechenden Controller, zumindest nach meinen begrenzten Experimenten. Ist das wahr?
ruby-on-rails
naming-conventions
allyourcode
quelle
quelle
Antworten:
Auf jeden Fall Plural .
Mit erholsamem Routing und einem einzigartigen Controller
Regler:
Routen:
Verwenden eines Plural-Controllers
Regler:
Routen:
rails generate controller --help
hat mehrere Beispiele:quelle
Die Verwendung mehrerer Namen für Controller ist nur eine Konvention.
Mehrere Namen klingen normalerweise natürlicher (insbesondere für Controller, die direkt an ein bestimmtes Modell gebunden sind: Benutzer -> Benutzer usw.), aber Sie können alles verwenden, was Sie möchten.
Bei den Helfern sind standardmäßig alle Helfer für alle Controller verfügbar. Technisch gesehen spielt es also keine Rolle, wie Sie Ihre Helfer benennen. Es ist nur eine andere Konvention, die Hilfsfunktionen eines Controllers in einem Helfer mit demselben Namen wie der Controller zu belassen.
quelle
Ein Modell ist singulär, weil es auf ein einzelnes Objekt wie User verweist. Ein Controller ist Plural, da es sich um die Steuerelemente (Methoden) für die Erfassung von Benutzern handelt. Wie man die Routen benennt, hängt von diesem einzelnen Entwickler ab. Ich habe noch nie einen Benutzer beschweren lassen, dass eine URL für eine Webanforderung Singular oder Plural ist. Das Endergebnis ist die Beibehaltung einer gemeinsamen Konvention für aktuelle und zukünftige Mitwirkende, während hochwertige Seitenanzeigen oder API-Anforderungen für die Endbenutzer bereitgestellt werden.
quelle
Eine sehr vollständige Erklärung finden Sie in den Rails-Handbüchern: http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-rails-default
quelle
Es ist die Rails-Konvention, dass ein Controller ein Modell verarbeitet, unabhängig davon, ob eine oder mehrere Instanzen dieses Modells zur Laufzeit vorhanden sein können. Sie können jedoch eine Rails-Anwendung verwenden, bei der (einige) der Controller (und die zugehörigen Ansichten) keinem bestimmten Modell zugeordnet sind, sondern einen komplexeren Satz von Funktionen verarbeiten. In diesem Fall macht die automatische Pluralisierung keinen Sinn.
Die Rails-Anwendung, an der ich gerade arbeite, passt in diese Kategorie, und es ist für mich nur eine Irritation, dass Rails erwartet, dass die Bezeichner, die ich an einer Stelle als Singular definiere, dann an anderen Stellen in ihrer Pluralform verwendet werden. Zum Beispiel möchte ich so etwas vielleicht definieren in
config/routes.rb
:und dann möchte ich, dass ein Controller
DashboardController
zusammenfassende Informationen zu bestimmten Aspekten der Anwendung anzeigt und Informationen aus mehr als einer Datenbanktabelle sammelt. Bezieht sich hierDashboard
also nicht auf ein Modell der Anwendung, und es wäre einfach komisch, den Namen des Controllers zu habenDashboardsController
.In dieser Antwort fand ich eine gute Lösung für die Irritation der automatischen Pluralisierung . Kurz gesagt, bearbeiten Sie die Datei
config/initializers/inflections.rb
und fügen Sie die Wörter, die nicht automatisch pluralisiert werden sollen, zu dieser Definition hinzu:quelle
Die Namenskonvention von Controllern in Rails begünstigt die Pluralisierung des letzten Wortes im Namen des Controllers, obwohl dies nicht unbedingt erforderlich ist (z
ApplicationController
. ).Zum Beispiel
ClientsController
ist vorzuziehenClientController
,SiteAdminsController
ist vorzuziehen gegenüberSiteAdminControlle
r oderSitesAdminsController
und so weiter.Wenn Sie diese Konvention befolgen, können Sie die Standard-Routengeneratoren (z. B. Ressourcen usw.) verwenden, ohne die einzelnen
:path
oder qualifizieren zu müssen:controller
, und die Verwendung von URL- und Pfad-Helfern in Ihrer gesamten Anwendung konsistent halten.Ref: Controller Naming Convention-Rails Doc
quelle
Ich fühle mich besser, wenn ich Singular für den Controller-Namen verwende
quelle
Wenn der Controller eine Ressource ist, muss er plural sein ...
Beispielsweise
Regler
Modell
Sie können jedoch einzelne Controller-Namen verwenden, wenn Sie keine entsprechenden Modelle wie haben
quelle
Die Verwendung von Pluralformen klingt einfach besser. Wenn Sie dann einen Controller haben, der eine einzelne Ressource verwaltet, dh einen Benutzer, können Sie die URL / den Benutzer trotzdem benennen.
Bei Helfern ist es oft nicht erforderlich, für jeden Controller einen Helfer zu haben, und oft gibt es Hilfsmethoden, mit denen Sie mehrere Controller verwenden und sie alle über Ihren Anwendungshelfer verunreinigen können. Sie können sie stattdessen in benutzerdefinierte Helfer wie z. B. layout_helper oder einen anderen einfügen andere gut benannte Datei.
quelle