É a convenção do Rails que um controlador lida com um modelo, se uma ou mais instâncias desse modelo podem existir durante o tempo de execução. No entanto, você pode ter uma aplicação Rails onde (alguns dos) controladores (e as visualizações associadas) não estão associados a nenhum modelo em particular, mas sim um conjunto mais complexo de funcionalidades. Nesse caso, a pluralização automática não faz sentido.
O aplicativo Rails no qual estou trabalhando atualmente se encaixa nesta categoria, e é simplesmente uma irritação para mim que Rails espere que os identificadores que eu defino como singulares em um lugar sejam usados em suas formas plurais em outros lugares. Por exemplo, posso querer definir algo assim em config/routes.rb
:
resource :dashboard, :only => [:show]
e quero que um controlador DashboardController
exiba informações resumidas sobre certos aspectos do aplicativo, reunindo informações de mais de uma tabela de banco de dados. Portanto, aqui, Dashboard
não se refere a nenhum modelo da aplicação, e seria estranho ter o nome do controladorDashboardsController
.
Encontrei uma boa solução para a irritação da pluralização automática nesta resposta . Resumindo, edite o arquivo config/initializers/inflections.rb
e adicione as palavras que você não deseja que sejam automaticamente pluralizadas a esta definição:
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end