Entendiendo el flujo de una aplicación rails
Nota: No tengo nada en contra del idioma español, pero personalmente creo que para la programación la mejor opción es el inglés. Y más aún programando en ruby ya que gracias a sus sintáxis tan fluída es como si estuvieramos armando sentencias. Por esto, aún siendo este blog en español se escribirán los ejemplos en inglés. Si tienes problemas con el idioma siempre puedes preguntar por los significados.
Rails sigue el patrón Modelo-Vista-Controlador (MVC), que es una estructura de software en la que se separa la aplicación en tres partes fundamentales para su mejor organización y manejo.
Modelo
Se encarga de la lógica de datos, no tiene porqué tener interacción con el usuario. En rails es gestionado por ActiveRecord, el cual mapea la base de datos a objetos en la aplicación.
Para ejemplificar un poco, supongamos que tenemos una clase User de ActiveRecord por lo que existirá una tabla users¹ en la base de datos. Eso significa que cada fila en la tabla se convertirá en un objeto para la aplicación, y las columnas serán entonces los atributos del objeto.
Los modelos se encuentran en el directorio app/models y el nombre los archivos es en singular (user.rb).
Controlador
Es el puente entre el modelo y la vista. Se encarga de procesar las peticiones y las respuestas. En rails es gestionado por ActionController.
Las URLs se mapean a su correspondiente acción en el controlador. Los métodos en el controlador se conocen como acciones.
Los modelos se encuentran en el directorio app/controllers y el nombre de los archivos es en plural + _controller (users_controller.rb).
Vista
Se encarga del render de la página final. Muestra la parte visual de la aplicación para el usuario. Cada acción en el controlador corresponde a una vista. En rails es gestionado por ActionView.
Las vistas se encuentran en el directorio app/views bajo el subdirectorio correspondiente al controlador. Los archivos se nombran de manera especial según el contenido y el render, pero generalmente es de la forma show.html.erb (La acción es show, el tipo es html y el render es por erb.
Entonces, el flujo de una aplicación rails sería de la siguiente manera:
¹Siguiendo la convención de rails, el modelo se nombra en singular mientras la tabla correspondiente debe ser nombrada en plural. Rails es inteligente por lo que si creamos un modelo Person usará la tabla people.
