En un proyecto de mediana o alta escala, la estructura de la base de datos está en constante cambio, ya sea porque se introducen nuevos catálogos a la aplicación, porque se modifique el tipo de un dato, se agreguen llaves, o se eliminen campos, la base de datos no tiene la misma forma de principio a fin. Esta naturaleza de cambios requiere que de alguna forma, llevemos control de las modificaciones que se hacen a la estructura de la base de datos, y de ser posible, que podamos revertirlos en caso de que algo no haya salido como esperamos.
Comúnmente conocidas como migraciones de esquema, decimos que una migración es como se conoce a los cambios incrementales y reversibles al esquema de la base de datos, éste tipo de archivos describen cambios al esquema que se pueden ejecutar de uno en uno, por lo que los llamamos incrementales, y que al mismo tiempo pueden ser revertidos.
Recuerda que nos referimos al esquema de la base de datos, como una descripción de la estructura de la base de datos. En Rails, esta descripción se hace con Rails en un lenguaje definido por el módulo de migraciones del framework. De esta manera, podrás visualizar la estructura en un archivo de Rails, puedes ver un ejemplo a continuación:
En Rails, las migraciones residen en la carpeta migrations dentro de la carpeta db, que al mismo tiempo contiene otros archivos relacionados a la base de datos, o incluso la base de datos misma. Cada migración se almacena en un archivo distinto, cuyo nombre se compone de dos elementos: un texto descriptivo del cambio y la fecha en que fue generada la migración, en formato de timestamp.
A través de la utilidad de la terminal de Rails, se pueden ejecutar las migraciones, como normalmente nos referimos a la ejecución del cambio en la migración, así mismo, se pueden revertir dichas migraciones, para deshacer los cambios de la migración.
Como parte de nuestra base de datos, Rails genera una tabla especial de nombre migrations, en la cuál almacena qué migraciones ya fueron ejecutadas y cuáles no, esto nos permite ejecutar únicamente migraciones nuevas, y saber cuáles podemos revertir y cuáles no.
Si alguna vez has usado Git, las migraciones son como un control de versiones para el esquema de la base de datos, las herramientas y características antes mencionadas, describen un sistema de control de versiones para los cambios a la estructura. Este sistema es importante porque permite intercambiar las modificaciones a la estructura entre todo el equipo, incluso sin tener que informar que se hicieron algunas modificaciones.
En un entorno de desarrollo, Rails reportará al ejecutar el proyecto que hay migraciones pendientes por realizar, para que todas las personas involucradas en el proyecto, sepan que hay nuevos cambios. Al mismo tiempo, gracias a que los archivos describen las modificaciones, no es necesario que cada persona en el equipo sepa cómo realizar los cambios, basta con ejecutar el comando de ejecución de migraciones, y éstos se realizarán.
También importante, es que en caso de que una migración haya ejecutado un cambio contraproducente, puede ser revertido con un comando, a través de la utilidad de terminal de Rails.
El concepto de migraciones puede también ser encontrado en otros frameworks MVC populares como Laravel, Django, y en algunos frameworks para la base de datos como Sequelize de JavaScript, por lo que podemos concluir que son un estándar de la industria para el control de cambios a la estructura de la base de datos.
Continuemos.
-
Módulo 1 | 10 clases
Introducción al framework
expand_more-
play_circle_outline
Clase 1
Presentación del curso de Rails
-
play_circle_outline
Clase 2
Qué es Ruby on Rails
-
play_circle_outline
Clase 3
Conocimientos previos
-
play_circle_outline
Clase 4
Instalación en Mac
-
play_circle_outline
Clase 5
Instalación en Windows
-
play_circle_outline
Clase 6
Crear un proyecto de Ruby on Rails
-
play_circle_outline
Clase 7
Explorar los archivos del proyecto
-
play_circle_outline
Clase 8
Componentes del framework
-
play_circle_outline
Clase 9
Convención sobre configuración
-
play_circle_outline
Clase 10
Ambientes de desarrollo
-
-
Módulo 2 | 9 clases
Primeros pasos con Rails
expand_more-
play_circle_outline
Clase 1
Primera vista y primera ruta. Hola mundo
-
play_circle_outline
Clase 2
Motor de render para las vistas
-
play_circle_outline
Clase 3
Cómo responde a una petición web Ruby on Rails
-
play_circle_outline
Clase 4
Introducción a las rutas
-
play_circle_outline
Clase 5
La ruta principal
-
play_circle_outline
Clase 6
Métodos en las vistas (Helpers)
-
play_circle_outline
Clase 7
Formularios en Rails
-
play_circle_outline
Clase 8
Leer parámetros en un controlador
-
play_circle_outline
Clase 9
Generadores de código
-
-
Módulo 3 | 10 clases
Manejo de datos
expand_more-
play_circle_outline
Clase 1
Introducción al bloque
-
play_arrow
Clase 2
MIgraciones en Rails
-
play_circle_outline
Clase 3
Crear la base de datos y primer migración
-
play_circle_outline
Clase 4
ID y timestamps
-
play_circle_outline
Clase 5
Modelos
-
play_circle_outline
Clase 6
Pruebas unitarias
-
play_circle_outline
Clase 7
Primera prueba unitaria
-
play_circle_outline
Clase 8
Primera validación del modelo
-
play_circle_outline
Clase 9
El ActiveRecord
-
play_circle_outline
Clase 10
Acercamiento a las consultas
-
-
Módulo 4 | 6 clases
REST
expand_more -
Módulo 5 | 9 clases
Construye tu propio CRUD
expand_more-
play_circle_outline
Clase 1
Crear la tabla y el modelo
-
play_circle_outline
Clase 2
Pruebas unitarias y validaciones
-
play_circle_outline
Clase 3
Crear el controlador
-
play_circle_outline
Clase 4
Rutas REST
-
play_circle_outline
Clase 5
Crear registros
-
play_circle_outline
Clase 6
Consultar y mostrar registros
-
play_circle_outline
Clase 7
Editar registros
-
play_circle_outline
Clase 8
Eliminar registros
-
play_circle_outline
Clase 9
Recapitulación del bloque
-
-
Módulo 6 | 10 clases
Controladores y rutas
expand_more-
play_circle_outline
Clase 1
Detalles de un controlador
-
play_circle_outline
Clase 2
Respuestas de un controlador
-
play_circle_outline
Clase 3
Parámetros
-
play_circle_outline
Clase 4
Strong Params: Filtrado de parámetros
-
play_circle_outline
Clase 5
Filtros en el controlador
-
play_circle_outline
Clase 6
Cookies y sesiones
-
play_circle_outline
Clase 7
Mensajes flash
-
play_circle_outline
Clase 8
Concerns
-
play_circle_outline
Clase 9
Métodos asociados a rutas
-
play_circle_outline
Clase 10
Configurar las rutas recurso
-
-
Módulo 7 | 18 clases
Modelos
expand_more-
play_circle_outline
Clase 1
Introducción al bloque
-
play_circle_outline
Clase 2
Filtrado con where
-
play_circle_outline
Clase 3
Operador lógico OR para consultas
-
play_circle_outline
Clase 4
Negación de consultas con NOT
-
play_circle_outline
Clase 5
Limpieza de parámetros (sanitizar)
-
play_circle_outline
Clase 6
Otras operaciones comúnes
-
play_circle_outline
Clase 7
Ejercicio: Implementar paginación
-
play_circle_outline
Clase 8
Scopes y métodos de clase
-
play_circle_outline
Clase 9
Configurando validaciones
-
play_circle_outline
Clase 10
Callbacks
-
play_circle_outline
Clase 11
Callbacks con su descripción en español
-
play_circle_outline
Clase 12
Relaciones entre tablas
-
play_circle_outline
Clase 13
Relaciones en el esquema
-
play_circle_outline
Clase 14
Definir asociaciones
-
play_circle_outline
Clase 15
Foreign Key Constraints
-
play_circle_outline
Clase 16
Relaciones muchos a muchos
-
play_circle_outline
Clase 17
Definir asociaciones muchos a muchos
-
play_circle_outline
Clase 18
Dónde aprender más
-
-
Módulo 8 | 13 clases
Vistas y Formularios
expand_more-
play_circle_outline
Clase 1
Panorama general de las vistas
-
play_circle_outline
Clase 2
Layouts
-
play_circle_outline
Clase 3
yields con nombre
-
play_circle_outline
Clase 4
Trabajando con formularios
-
play_circle_outline
Clase 5
Cómo funcionan los métodos de FormBuilder
-
play_circle_outline
Clase 6
Select
-
play_circle_outline
Clase 7
Checkboxes
-
play_circle_outline
Clase 8
Checkboxes y relaciones
-
play_circle_outline
Clase 9
Radio buttons
-
play_circle_outline
Clase 10
Parciales
-
play_circle_outline
Clase 11
Render de colecciones
-
play_circle_outline
Clase 12
Bloques y layouts para parciales
-
play_circle_outline
Clase 13
Helper methods
-
-
check_circle_outlineMódulo 9
Examen del curso
expand_more-
done_all
Examen
Examen final del curso
-