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
:
resource :dashboard, :only => [:show]
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 hier Dashboard
also nicht auf ein Modell der Anwendung, und es wäre einfach komisch, den Namen des Controllers zu haben DashboardsController
.
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:
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end