Zgodnie z konwencją Railsów jeden kontroler obsługuje jeden model, niezależnie od tego, czy jedna lub więcej instancji tego modelu może istnieć w czasie wykonywania. Możesz jednak mieć aplikację Railsową, w której (niektóre) kontrolery (i powiązane z nimi widoki) nie są powiązane z żadnym konkretnym modelem, ale raczej obsługują bardziej złożony zestaw funkcji. W tym przypadku automatyczna liczba mnoga nie ma sensu.
Aplikacja Rails, nad którą obecnie pracuję, mieści się w tej kategorii i jest dla mnie po prostu irytacją, że Railsy oczekuje, że identyfikatory, które określam jako liczbę pojedynczą w jednym miejscu, są następnie używane w liczbie mnogiej w innych miejscach. Na przykład mógłbym chcieć zdefiniować coś takiego w config/routes.rb
:
resource :dashboard, :only => [:show]
a następnie chcę, aby kontroler DashboardController
wyświetlał podsumowanie informacji o niektórych aspektach aplikacji, zbierając informacje z więcej niż jednej tabeli bazy danych. Więc tutaj Dashboard
nie odnosi się do żadnego modelu aplikacji i byłoby po prostu dziwne, gdyby nazwa kontrolera brzmiała DashboardsController
.
Znalazłem dobre rozwiązanie problemu irytacji automatycznej liczby mnogiej w tej odpowiedzi . Krótko mówiąc, edytuj plik config/initializers/inflections.rb
i dodaj słowa, których nie chcesz automatycznie tworzyć liczby mnogiej do tej definicji:
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end