La convention Rails veut qu'un contrôleur gère un modèle, qu'une ou plusieurs instances de ce modèle puissent exister pendant l'exécution. Cependant, vous pouvez avoir une application Rails où (certains) des contrôleurs (et les vues associées) ne sont pas associés à un modèle particulier, mais gèrent plutôt un ensemble plus complexe de fonctionnalités. Dans ce cas, la pluralisation automatique n'a pas de sens.
L'application Rails sur laquelle je travaille actuellement entre dans cette catégorie, et le fait que Rails s'attende à ce que les identifiants que je définis au singulier à un endroit soient ensuite utilisés au pluriel à d'autres endroits m'irrite tout simplement. Par exemple, je pourrais vouloir définir quelque chose comme ceci dans config/routes.rb
:
resource :dashboard, :only => [:show]
et ensuite je veux un contrôleur DashboardController
pour afficher des informations synthétiques sur certains aspects de l'application, en rassemblant des informations provenant de plusieurs tables de la base de données. Ainsi, ici, Dashboard
ne fait référence à aucun modèle de l'application, et il serait tout simplement bizarre que le nom du contrôleur soit DashboardsController
.
J'ai trouvé une bonne solution à l'irritation de la pluralisation automatique en cette réponse . En bref, modifiez le fichier config/initializers/inflections.rb
et ajoutez à cette définition les mots que vous ne voulez pas voir se mettre automatiquement au pluriel :
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end
3 votes
J'ai eu le même dilemme en essayant de choisir des noms de contrôleurs au singulier ou au pluriel !
16 votes
Merci :) La culture Rails a une façon de vous faire sentir stupide si vous posez ce genre de questions.