usos tutorial sintaxis rails mundo hola funciona espaƱol ejemplo como comandos caracteristicas basicos ruby-on-rails naming-conventions

ruby on rails - tutorial - Nombres de controlador y ayudantes singulares o plurales en Rails



ruby on rails usos (9)

Definitivamente plural .

Con enrutamiento tranquilo y un controlador singular

Controlador:

dog_controller.rb

Rutas:

map.resources :dogs # => blows up map.resources :dog # is ok, but... dogs_path # => blows up dog_path # => ok

Usando un controlador plural

Controlador:

dogs_controller.rb

Rutas:

map.resources :dogs dogs_path # => ok dog_path # => ok

rails generate controller --help tiene ejemplos singulares sin embargo. Ugh.

¿Hay alguna desventaja al usar nombres singulares para controladores y ayudantes? Nada parece depender de esto. Incluso parece que los ayudantes no tienen que hacer la misma elección sobre el singular y el plural como sus controladores correspondientes, al menos según mi limitada experimentación. ¿Es eso cierto?


Es la convención de Rails que un controlador maneje un modelo, ya sea que una o más instancias de ese modelo puedan existir durante el tiempo de ejecución. Sin embargo, puede tener una aplicación Rails en la que (algunos de) los controladores (y las vistas asociadas) no estén asociados con ningún modelo en particular, sino que manejen un conjunto de funcionalidades más complejo. En este caso, la pluralización automática no tiene ningún sentido.

La aplicación Rails en la que estoy trabajando actualmente encaja en esta categoría, y es simplemente una molestia para mí que Rails espere que los identificadores que defino como un singular en un lugar se usen luego en sus formas plurales en otros lugares. Por ejemplo, me gustaría definir algo como esto en config/routes.rb :

resource :dashboard, :only => [:show]

y luego quiero que un controlador DashboardController muestre información resumida sobre ciertos aspectos de la aplicación, recopilando información de más de una tabla de base de datos. Entonces, aquí, Dashboard no se refiere a ningún modelo de la aplicación, y sería simplemente extraño que el nombre del controlador sea DashboardsController .

Encontré una buena solución a la irritación de la pluralización automática en esta respuesta . En resumen, edite el archivo config/initializers/inflections.rb y agregue las palabras que no quiere que se plieguen automáticamente a esta definición:

ActiveSupport::Inflector.inflections do |inflect| inflect.uncountable %w( dashboard foo bar baz ) end


La convención de nomenclatura de los controladores en Rails favorece la pluralización de la última palabra en el nombre del controlador, aunque no es estrictamente necesario (por ejemplo, ApplicationController ).

Por ejemplo, ClientsController es preferible a ClientController , SiteAdminsController es preferible a SiteAdminControlle o SitesAdminsController , y así sucesivamente.

Seguir esta convención le permitirá usar los generadores de ruta predeterminados (por ejemplo, recursos, etc.) sin necesidad de calificar cada :path o :controller , y mantendrá constante el uso de URL y de ayudantes de ruta en toda su aplicación.

Ref .: Controlador de Naming Convention-Rails Doc


Me siento mejor cuando uso singular para nombre de controlador


Si el controlador es un recurso, entonces debe ser plural ...

Por ejemplo

Controlador

articles_controller.rb

Modelo

article.rb

Pero puedes usar nombres de controlador singulares cuando no tienes modelos correspondientes como

welcome_controller.rb


Tiene una explicación muy completa en las guías de Rails: this


Un modelo es singular porque hace referencia a un solo objeto como el usuario. Un controlador es plural porque son los controles (métodos) para la colección de usuarios. Cómo uno nombra las rutas depende de ese desarrollador individual. Nunca he tenido un usuario que se queje de que una URL para una solicitud web es singular o plural. El resultado final es mantener una convención común para los contribuyentes actuales y futuros mientras se muestran las pantallas de la página de calidad o las solicitudes de la API para los usuarios finales.


Usar nombres en plural para controladores es solo una convención.

Los nombres plurales suelen sonar más naturales (especialmente para los controladores que están vinculados directamente a un modelo específico: Usuario -> Usuarios, etc.), pero puede usar lo que desee.

En cuanto a los ayudantes, todos los ayudantes están disponibles para todos los controladores por defecto, por lo que técnicamente, la forma en que el nombre de sus ayudantes no importa en absoluto. Es solo otra convención mantener las funciones auxiliares de un controlador en un asistente con el mismo nombre que el controlador.


Usar plurales simplemente suena mejor, y luego si tienes un controlador que maneja un recurso singular, es decir, el usuario, entonces aún puedes nombrar la url / usuario.

Con los ayudantes a menudo no hay necesidad de tener un ayudante para cada controlador, y a menudo habrá métodos auxiliares que pueden usar múltiples controladores de ascors y más bien ensuciarlos a través de su asistente de aplicación; puede ponerlos en ayudantes personalizados como, por ejemplo, layout_helper o cualquier otro. otro archivo bien nombrado.