Ruby on Rails, parte 17: Scaffolding

En uno de los posteos pasados, Ruby on Rails, parte 14: CRUD y REST, aprendimos como trabajar con las operaciones básicas de una tabla en una base de datos, crear, modificar, eliminar y mostrar. En esa ocasión teníamos un modelo Tarea y un controlador tareas con las acciones index, show, new, create, edit, update y destroy. De esta forma aprendimos la facilidad que nos da RoR a la hora de trabajar con registros, haciéndolo muy amigable. Sin embargo esto se puede hacer más fácil aún.

El scaffolding es una técnica que se utilizó por primera vez en Ruby on Rails (aunque ya es utilizado hoy día por otros frameworks) que permite crear CRUD, pero en forma mucho más rápida. Se podría decir que lo que hicimos en el posteo que acabo de nombrar se puede hacer con sólo una línea.

¡Empecemos!

Un profesor de guitarra necesita tener un registro de sus clases, entonces necesita guardar el nombre del alumno, una descripción de la clase, una evaluación numérica del rendimiento del alumno en la clase, y la fecha y hora de la clase.

Entonces vamos a crear un nuevo proyecto llamado clases_de_guitarra.

Abrimos nuestra consola y escribimos:

rails new clases_de_guitarra -d mysql

Ahora vamos a nuestra interfaz de mysql y creamos las tres tablas para la aplicación:

CREATE DATABASE clases_de_guitarra_development;
CREATE DATABASE clases_de_guitarra_test;
CREATE DATABASE clases_de_guitarra_production;

Y ahora vamos dentro de nuestro proyecto a config -> database.yml y configuramos los datos para la base de datos que acabamos de crear. Si no te acordás cómo se hace acá te dejo el posteo donde se explica: Ruby on Rails, parte 11: Conexión con MySQL

Bien, ahora vamos de nuevo a la línea de comandos y entramos a nuestro proyecto:

cd clases_de_guitarra

Creamos el scaffold:

rails g scaffold Turno alumno:string comentario:text evaluacion:integer fecha:date hora:time

Hacer esto fue como crear generar un modelo, creará las migraciones y los atributos correspondientes para el alumno, el comentario, evaluación, fecha y hora del turno. Pero, lo interesante de esto es que también creará por nosotros un controlador llamado turnos con las acciones que venimos creando: indexshownewcreateeditupdate y destroy. Osea ya tenemos todo listo para agregar, modificar, eliminar y mostrar los turnos.

Ahora debemos crear la tabla como siempre:

rake db:migrate

Y vamos a definir nuestra página principal, que en este caso será la acción de index de tareas. Así que vamos a config -> routes.rb abrimos el archivo, buscamos:

# root :to => 'welcome#index'

Y lo reemplazamos por:

root :to => 'turnos#index'

Luego volvemos al raíz de nuestro proyecto y entramos a public y eliminamos index.html.

Ahora ya podemos reiniciar nuestro servidor desde la consola:

rails s

Y entrar a https://localhost:3000/ para probar nuestra aplicación.

Cosas a tener en cuenta:

El scaffold nos acelera increíblemente el trabajo sin embargo:

  • Por defecto está en inglés. Tendrás que meterte en la carpeta de vistas y modificar a manopla las plantillas. Algo que no debería ser un problema a estas alturas.
  • No tiene validaciones. Tendrás que ponerle validaciones a los campos, si no te acordás acá te dejo la publicación en dónde aprendimos a validar: Ruby on Rails, parte 15: Validaciones

Anterior: Ruby on Rails, parte 16: Relaciones en los modelos

Siguiente: Ruby on Rails, parte 18: Javascript y CoffeeScript

 

Redes sociables