Ruby on Rails
Convenciones de nombres
Buscar..
Controladores
Los nombres de clase del controlador están pluralizados. La razón es que el controlador controla varias instancias de la instancia de objeto.
Por ejemplo : OrdersController sería el controlador para una tabla de orders . Rails buscará la definición de clase en un archivo llamado orders_controller.rb en el directorio /app/controllers .
Por ejemplo : PostsController sería el controlador para una tabla de posts .
Si el nombre de la clase del controlador tiene varias palabras en mayúsculas, se asume que el nombre de la tabla tiene guiones bajos entre estas palabras.
Por ejemplo: si un controlador se llama PendingOrdersController , el nombre de archivo asumido para este controlador será pending_orders_controller.rb .
Modelos
El modelo se nombra utilizando la convención de nomenclatura de clases de MixedCase ininterrumpido y es siempre el singular del nombre de la tabla.
Por ejemplo : si una tabla se llamara orders , el modelo asociado se llamaría Order
Por ejemplo : si una tabla se llamara posts , el modelo asociado se llamaría Post
Rails buscará la definición de clase en un archivo llamado order.rb en el directorio /app/models .
Si el nombre de la clase modelo tiene múltiples palabras en mayúsculas, se asume que el nombre de la tabla tiene guiones bajos entre estas palabras.
Por ejemplo: si un modelo se llama BlogPost , el nombre de tabla asumido será blog_posts .
Vistas y diseños
Cuando se representa una acción del controlador, Rails intentará encontrar un diseño y una vista coincidentes en función del nombre del controlador.
Las vistas y diseños se colocan en el directorio de app/views .
Dada una solicitud a la acción del PeopleController#index , Rails buscará:
- el diseño denominado
peopleenapp/views/layouts/(oapplicationsi no se encuentra ninguna coincidencia) - una vista llamada
index.html.erbenapp/views/people/por defecto - Si desea representar otro archivo llamado
index_new.html.erb, debe escribir código para eso enPeopleController#indexacción dePeopleController#indexcomorender 'index_new' - podemos establecer diferentes
layoutspara cadaactionescribiendorender 'index_new', layout: 'your_layout_name'
Nombres de archivos y carga automática
Los archivos Rails, y los archivos Ruby en general, deben nombrarse con los lower_snake_case archivo lower_snake_case . P.ej
app/controllers/application_controller.rb
es el archivo que contiene la definición de la clase ApplicationController . Tenga en cuenta que, mientras que PascalCase se utiliza para nombres de clase y módulo, los archivos en los que residen deben ser lower_snake_case .
La nomenclatura coherente es importante ya que Rails utiliza los archivos de carga automática según sea necesario y utiliza la "inflexión" para transformar entre diferentes estilos de denominación, como la transformación del application_controller de application_controller en ApplicationController y viceversa.
Por ejemplo, si Rails ve que la clase BlogPost no existe (aún no se ha cargado), buscará un archivo llamado blog_post.rb e intentará cargar ese archivo.
Por lo tanto, también es importante nombrar los archivos por lo que contienen, ya que el autocargador espera que los nombres de los archivos coincidan con el contenido. Si, por ejemplo, la blog_post.rb lugar contiene una clase llamada solo Post , verá una LoadError : Expected [some path]/blog_post.rb to define BlogPost .
Si agrega un directorio en app/something/ (por ejemplo, / models / products /), y
- desea espacios de nombres y clases dentro de new dir, entonces no necesita hacer nada y se cargará solo. Por ejemplo, en la
app/models/products/ you would need to wrap your class inmódulo Productos`. - no quiero que los espacios y las clases de espacio de nombres
config.autoload_paths += %W( #{config.root}/app/models/products )dentro de mi nuevo directorio, entonces debes agregarconfig.autoload_paths += %W( #{config.root}/app/models/products )a tuapplication.rbpara autoload.
Una cosa más a la que prestar atención (especialmente si el inglés no es su primer idioma) es el hecho de que Rails da cuenta de los sustantivos irregulares en plural en inglés. Por lo tanto, si tiene un modelo llamado "Foot", el controlador correspondiente debe llamarse "FeetController" en lugar de "FootsController" si desea que el enrutamiento "mágico" de los rieles (y muchas de estas características) funcione.
Clase de modelos del nombre del controlador
Puede obtener una clase de modelo de un nombre de controlador de esta manera (el contexto es la clase de controlador):
class MyModelController < ActionController::Base
# Returns corresponding model class for this controller
# @return [ActiveRecord::Base]
def corresponding_model_class
# ... add some validation
controller_name.classify.constantize
end
end