Creando una Aplicación Web similar a SoundCloud con Ruby on Rails 6 y Angular 10 – Parte 3

Ruby on Rails Tutoriales | | Comunidad: Crear un Post, Eventos Devs, Foro

En la Parte anterior llamada Creando una Aplicación Web similar a SoundCloud con Ruby on Rails 6 y Angular 10 – Parte 2 instalamos la gema mysql2 que me permite integrar Ruby on Rails 6 con la base de datos MySQL, luego creamos la base de datos con el nombre soundcloudbd y con codificación utf8mb4_unicode_ci, luego creamos los modelos de las migraciones para todas las tablas del proyecto, en esta Parte 3 vamos a crear los campos de cada cada tabla, definiremos las relaciones correspondientes, entre otras tareas, vamos con ello. 

Partes

Antes de continuar te invito a leer los siguientes artículos:

Asimismo te invito a escuchar el Podcast: “Porque Algunos Desarrolladores no Terminan El Proyecto de Un Cliente”:

Spotify:Sound Cloud:

Bien ahora continuemos con el Post: Creando una Aplicación Web similar a SoundCloud con Ruby on Rails 6 y Angular 10 – Parte 3. 

Migraciones

Ahora vamos a definir los campos de cada tabla en los archivos de migraciones que creamos en la Parte 2 de este tutorial, para no perdernos, es importante recordar que los archivos con las migraciones se encuentran en db > migrate

Bien entonces primero comencemos con la tabla usuarios.

Tabla usuarios

Abrimos el archivo 20200829164315_create_usuarios.rb, definimos los campos nombresyapellidos, email, foto, facebook, twitter, instagram, generosfavoritos, artistasfavoritos y albunesfavoritos.

Luego hago referencia a la tabla cancionesusuarios, configuracions e historialreproduccions, el nombre lo colocamos en Singular porque si no lo hacemos, las referencias no tendrán efecto y te dará error.

Por último agregamos 3 claves foráneas (foreign keys) a las referencias de las tablas cancionesusuarios, configuracions e historialreproduccions, aca si colocamos los nombres de las tablas en Plural, no hay problema.

Tabla configuracion

Ahora crearemos la tabla para configuracions que servirá para que el usuario almacene la configuración de su cuenta, abrimos el archivo 20200829165846_create_configuracions.rb y definimos los campos idioma, categoria, titulocanalpersonalizado y nombreautorpersonalizado.

Debajo creo un campo llamado usuarios_id para hacer referencia a un determinado id de la tabla usuarios.

Tabla cancionesusuario

En esta tabla vamos a guardar las pistas o canciones que el usuario suba a su cuenta, abrimos el archivo 20200829170525_create_cancionesusuarios.rb y agregamos los campos nombre, genero, fotoportada y archivo. Asimismo creo un campo llamado usuarios_id para hacer referencia a un determinado id de la tabla usuarios.

Tabla historialreproducciones

En esta tabla vamos a guardar un historial de las canciones que un usuario ha escuchado en la plataforma, abrimos el archivo 20200829171011_create_historialreproduccions.rb y agregamos los campos nombre, artista y genero.

También creo un campo llamado usuarios_id para hacer referencia a un determinado id de la tabla usuarios.

Bien ya definimos los campos para cada tabla en los archivos correspondientes, ahora vamos a proceder a crear las columnas, pero para evitar que nos de error en las referencias entre las tablas, primero vamos a ejecutar las migraciones para crear la tabla configuracion, cancionesusuario e historialreproducciones.

NOTA: El archivo de migración para la tabla usuarios llamado 20200829164315_create_usuarios.rb lo muevo a otro directorio para que no se ejecute).

Abro la consola de comandos y ejecuto el siguiente comando para proceder a ejecutar las migraciones para crear la tabla configuracion, cancionesusuario e historialreproducciones.

Entonces si voy a mi phpMyAdmin, puedo ver que se me han creado las tablas configuracion, cancionesusuario e historialreproducciones con sus respectivos campos.

Tabla configuracion

Tabla cancionesusuario

Tabla historialreproducciones

Bien, ahora pasare a crear la tabla usuarios, esta vendría a ser algo así como la tabla principal en donde se concentran todos los datos de los usuarios.

NOTA: Ahora los archivos de migración llamados 20200829165846_create_configuracions.rb, 20200829170525_create_cancionesusuarios.rb y 20200829171011_create_historialreproduccions.rb los muevo a otro directorio para que no se ejecuten, ya no los necesitamos y si los ejecutamos nuevamente, puede dar error).

Eso si, el archivo 20200829164315_create_usuarios.rb lo regreso al directorio de migraciones para ejecutarlo y poder crear la tabla usuarios.

Y abro la consola de comandos y ejecuto el siguiente comando para proceder con la creación de la tabla usuarios.

Si voy nuevamente a mi phpMyAdmin, puedo ver que se me han creado las tablas usuarios con sus respectivos campos.

Tabla usuarios

Y bueno hasta aquí terminamos esta tercera parte en donde hemos creado los campos para cada tabla del proyecto y hemos creado los campos para hacer referencia entre las tablas. Cuando trabajemos con los modelos utilizaremos los métodos para hacer relaciones como has_many.

Ten Paciencia, lo que quiero es que entiendas todo el proceso para Crear este Proyecto y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje. 

Nota (s)

  • Los Pasos y opciones mencionadas en este capitulo del tutorial pueden cambiar, esto no depende de nosotros, si no de las empresas que dan soporte a estas herramientas como la Gema mysql2 y Ruby on Rails (RoR), que suelen cambiar sus opciones de despliegue y configuración en futuras versiones.
  • En el siguiente capitulo crearemos los campos de cada cada tabla, definiremos las relaciones correspondientes, entre otras tareas.
  • No olvides que debemos utilizar la tecnología para hacer cosas buenas por el mundo. 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.

Newsletter

Suscríbete a Nuestro Boletín de Novedades:

(Luego de la suscripción no te va salir ningun mensaje. Solo revisa tu bandeja de Correo para confirmar tu suscripción)
* indicates required
Subscribirse
Notificar a
guest
0 Comments
Inline Feedbacks
View all comments