Uso del Generador Scaffold en Ruby on Rails

Clase 12 de 36Curso de Introducción a Ruby on Rails

Contenido del curso

Nuestra primera aplicación

Resumen

Construir una aplicación web completa en Ruby on Rails se simplifica enormemente cuando utilizas el generador adecuado. Scaffold es ese generador que, con una sola línea en la consola, crea todo el patrón MVC —modelo, vista y controlador— junto con rutas, helpers, archivos de assets y vistas JSON, listos para gestionar un recurso completo.

¿Cómo funciona el comando rails generate scaffold?

Desde la raíz del proyecto, el comando rails generate scaffold recibe el nombre del recurso y sus atributos con sus tipos de dato. Por ejemplo, para modelar el concepto de libro [0:48]:

bash rails generate scaffold Book title:string author:string description:text isbn:string page_count:integer

  • title y author: cadenas de texto cortas, de tipo string.
  • description: texto largo, de tipo text.
  • isbn: identificador del libro, también string.
  • page_count: número de páginas, de tipo integer.

Esta sintaxis sigue el paradigma orientado a objetos: cada atributo representa una propiedad real del concepto que estás abstrayendo. Al ejecutar el comando, Rails genera todos los archivos necesarios para crear, listar, editar y eliminar registros de ese recurso.

¿Qué archivos genera scaffold al ejecutarse?

La salida en consola muestra varias invocaciones a generadores internos [2:07]:

  • Active Record: crea el modelo y el archivo de migración. Las migraciones son instrucciones que traducen la estructura de Ruby al mundo de las bases de datos.
  • Generador de rutas: utiliza el método resources dentro del archivo de rutas, lo que produce automáticamente todas las rutas REST necesarias para el recurso.
  • Scaffold controller: genera BooksController con acciones predefinidas como index, show, new, edit, create, update y destroy.
  • Helper: crea un archivo helper para abstraer lógica reutilizable dentro de las vistas.
  • JBuilder: produce archivos que devuelven datos en formato JSON, útiles para APIs o respuestas estructuradas.
  • Assets con Sass: genera books.scss dentro de la carpeta assets, donde puedes escribir reglas CSS en formato Sass para estilizar las vistas del recurso.

¿Qué significa el método resources en las rutas?

Según las guías oficiales de Rails (Rails Routing from the Outside In) [2:42], cuando declaras resources :books, obtienes un conjunto completo de rutas que combinan verbos HTTP (GET, POST, PATCH, DELETE) con acciones específicas del controlador. Con una sola línea puedes acceder al listado de libros, crear uno nuevo, mostrar sus detalles, editarlo o eliminarlo.

Estas rutas siguen convenciones, no reglas inamovibles. Puedes modificarlas según las necesidades de tu proyecto.

¿Cómo consumir los recursos generados por scaffold?

Antes de probar la interfaz, necesitas ejecutar dos pasos fundamentales [5:25]:

  1. Levantar el servidor con rails server en una consola separada (puedes abrir otra pestaña con Ctrl + Shift + T).
  2. Ejecutar la migración con rails db:migrate. Este comando transforma las definiciones de Ruby en tablas reales dentro de la base de datos. Sin este paso, Rails mostrará un error al intentar acceder a los recursos.

bash rails db:migrate rails server

Una vez migrado, accede a localhost:3000/books para ver la vista principal del recurso [6:10].

¿Cómo se conectan enrutador, controlador y vista?

Cuando visitas /books, el enrutador dirige la petición a la acción index de BooksController [6:36]. Dentro de esa acción, el controlador consulta al modelo y a la base de datos, almacenando todos los libros en una variable de instancia llamada @books.

Esa variable llega directamente a la vista index.html.erb, ubicada en app/views/books/. Allí, mediante el método de iteración each [7:05], se recorre la colección y se genera una fila HTML por cada libro con sus atributos (título, autor, descripción, ISBN, número de páginas) y enlaces a las acciones de mostrar, editar y eliminar.

El ciclo completo es: petición → enrutador → controlador → modelo → vista → respuesta renderizada con el sistema de templates ERB.

Este flujo demuestra cómo scaffold integra todo el patrón MVC y el sistema de assets en una estructura funcional desde el primer momento. Si quieres profundizar en cómo las migraciones transforman tu código Ruby en estructuras de base de datos, comparte tus dudas y avancemos juntos.

      Uso del Generador Scaffold en Ruby on Rails