La arquitectura de Rails se basa en un modelo de 3 capas o Model-View-Controller (MVC). Es decir, un sistema en el que las tareas se reparten entre 3 áreas separadas y, teóricamente, bien definidas.
Modelos
Referidos a los datos y generalmente representados por una tabla en la base de datos. En Rails, se crea una tabla para cada modelo, y éste es el responsable de definir las relaciones con otros modelos. Así por ejemplo, el Libro, tendrá una Categoría. Ambos son modelos y estarán representados por tablas en la base de datos. (Nota para liarla: pueden existir modelos que no tengan su correspondiente tabla).
¿Qué hacen los modelos aparte de "existir"?
Relaciones: El modelo es quien declara su relación con otros modelos: por ejemplo, Libro pertenece a varias categorías (belongs_to) y Categoría tiene varios libros (has_many).
Validaciones: Los modelos, tambien se encargan de indicar qué datos son necesarios para su funcionamiento. Por ejemplo, el modelo Libro, compuesto de Título, Páginas y Precio puede declarar que no puede existir sin Título (validates_presence_of :title) y que el precio debe ser número (validates_numericality_of :precio) respecto a que sea mayor de 1 se trata en otra parte, dentro del modelo).
Controladores o Controllers
Son los directores de orquesta. Una vez que les llega una petición desde un navegador, reflejada en la URL, se ponen en marcha realizando operaciones de manipulación de los datos descritos en los modelos: Creación, Actualización, Eliminación o Búsqueda, operaciones típicas de cualquier sistema interactivo (Denominado CRUD o Create, Retrieve, Update, Delete).
Una vez realizada la operación, el controlador devuelve una respuesta que generalmente se refleja en una "Vista" o página.
Vistas o Views
Es lo que ve el usuario: el interfaz del sistema a través del cual realiza peticiones. Es aquello que llega y se dispone en el navegador: en resumen, las páginas que reflejan el sistema. No es sólo HTML, sino que también puede ser XML.
Es decir, una petición que llega desde el navegador a la aplicación, es recibida mediante una URL a través de un "dispatcher" por el controlador. Éste, compuesto por métodos que realizan diferentes acciones, se encargará de realizar las acciones pertinentes a través del modelo: buscar datos, eliminarlos, guardarlos... una vez realizada la acción, irá en busca de la Vista que muestra al usuario la respuesta del sistema.

Más información digerible en Beginners Guide: Model, View, Controller (MVC) Architecture y MVC: The Most Vexing Conundrum.
Escribe un comentario