Mientras aprendía a crear una aplicación de rieles en la escuela remota de Microverse, hubo numerosas ocasiones en las que mi compañero de codificación y yo tuvimos que probar si nuestros métodos de asociación de rieles funcionaban. Tuvimos que aprender a usar la consola de Rails para probar esto porque es más rápido que ejecutar un navegador o crear pruebas en un archivo separado.
La consola de Rails es una sesión irb que está integrada en el entorno de Rails y se accede a ella escribiendo Rails c en la terminal. Se puede usar para probar métodos de asociación , validaciones y verificar mensajes de error al crear una aplicación Rails.
Construyamos una aplicación de blog de muestra para ver cómo funciona. Comenzaremos explicando qué son los métodos de asociación, las validaciones y los mensajes de error.
Los métodos de asociación en rieles se utilizan para mostrar la relación que existe entre dos modelos. Muestra cómo se conectan los modelos. ¿Qué es un modelo de rieles? Es una clase de Ruby que agrega registros a la base de datos a través de un archivo de migración de Rails.
La generación de un modelo de rieles genera automáticamente un archivo de migración. El archivo de migración crea tablas donde no existía ninguna y agrega o elimina columnas en el esquema. Métodos de asociaciones de rieles hacer es fácil capturar las relaciones entre los modelos .
Active Records Validations proporciona ayudantes de validación que garantizan que solo los datos válidos se guarden en la base de datos. Por ejemplo, en nuestra aplicación de blog de muestra, requerimos que un usuario ingrese su nombre para guardarlo en la base de datos. Al colocar asistentes de validación en el archivo user.rb, no se puede guardar un usuario si no se proporciona un nombre.
Si un usuario no puede guardar, los rieles proporcionan mensajes de error para explicar por qué a través de métodos de instancia de mensajes de error . Estos métodos de instancia devuelven una matriz de mensajes de error si existe o una matriz vacía si no se encuentra ningún error.
El método errors.full_messages devuelve una lista de mensajes de error que es fácil de leer y que se puede mostrar en la página de vista para que el usuario los vea.
Creación de una nueva aplicación de rieles y generación de modelos de rieles.
Vamos a construir un blog con dos modelos, un usuario con un atributo de nombre y un artículo con un atributo de título y un atributo de cuerpo. Para comenzar, abra su terminal e ingrese el comando rails new blog_app .
Este comando genera carpetas y archivos que necesita una nueva aplicación Rails.
A continuación, haga cd en la carpeta blog_app y creemos nuestros modelos. Primero, creamos un modelo de usuario, luego un modelo de artículo.
El comando utilizado para crear modelos en rieles comienza con rieles g modelo seguido del nombre del modelo (por ejemplo, Usuario ) luego el nombre de la columna: tipo de datos (por ejemplo, nombre: cadena )
Rails g model (el nombre del modelo) (nombre de la columna 1: tipo de datos) (nombre de la columna 2: tipo de datos)
En nuestro caso:- Rails g modelo Nombre de usuario: cadena
Este comando crea un archivo de migración, prueba para el modelo y accesorios utilizados para agregar datos al probar sus modelos. Creamos un modelo de usuario con un atributo que es el nombre del usuario. Este es el mismo proceso que usaremos para crear el modelo de artículo que tendrá dos columnas, título y cuerpo, ambas de tipo cadena.
:- rieles g modelo Título del artículo: cadena cuerpo: cadena
Para ver su archivo de migración, vaya a app/db/migrate. Esto le da una idea de qué tablas y columnas creará su archivo de migración en su esquema de base de datos Los archivos aparecen en el orden en que fueron generados. Tenga en cuenta que dije que esto es un vistazo de lo que se creará, lo que significa que las tablas aún no se han creado.
Para crearlos, simplemente escriba el comando Rails db: migrate que migra sus archivos y crea la tabla de usuarios con la columna de nombre y la tabla de artículos con las columnas de título y cuerpo en la base de datos.
En caso de que se cometa un error al generar el modelo de rieles, se puede usar el comando Rails destroy model (nombre del modelo) para deshacer el comando Rails g model. Invierte el comando Rails g model y elimina los archivos de migración que se habían generado antes de ejecutar el comando Rails db:Migrate .
Si tuvieras ya ejecute el comando Rails db: migración entonces simplemente hazlo a Rails db: rollback para soltar la tabla en el esquema, eliminar el archivo de migración en la carpeta app/db/migrate y luego destruir el modelo de Rails con el comando Rails destroy anterior.
Relación entre modelos de Usuario y Artículo.
En una aplicación de blog, un usuario puede escribir muchos artículos, pero un artículo solo puede pertenecer a un usuario. Los desarrolladores usan diagramas ERB para mostrar visualmente esta relación mientras diseñan bases de datos para sus aplicaciones. Una buena herramienta para usar es LUCID Chart .
A continuación, agregue el método de asociación has_many a su modelo. Vaya a blog_app/app/models/user.rb y agregar has_many :artículos. Este método está disponible a través de la herencia de la clase Application Record en Rails.
Probando el método has_many usando Rails Console
En este punto, podemos comenzar a probar nuestros modelos y métodos de asociación.
1. Escriba rails c en su terminal para acceder a su sesión irb
2. Verifique si ya se ha creado un usuario usando User.all
Este comando utiliza consultas SQLite a través de registros activos para verificar si existe algún usuario en la tabla de usuarios. No se devuelve nada ya que no hemos creado un usuario para nuestra aplicación.
3. Cree un usuario, use el comando User.new . Para facilitar su uso, utilizaremos una variable para almacenar los datos de nuestro nuevo usuario. Cree una variable de usuario y asígnela a User.new , por ejemplo, user = User.new. T
El valor de retorno será un usuario sin atributos, es decir, user_id = nil, name = nil, etc. Esta es otra forma de verificar si las columnas, también conocidas como atributos, en la base de datos son correctas.
Rellene los atributos de la siguiente manera usuario = Usuario.nuevo(nombre: “Zoe”)
Este comando crea un usuario llamado Zoe. Si escribe user.id , la salida será nula porque el usuario se creó pero no se guardó en la base de datos. Por lo tanto, debemos hacer user.save para guardar el usuario en la base de datos. Ahora intente consultar la identificación del usuario escribiendo el comando user.id , el resultado será 1.
Enhorabuena, has creado tu primer usuario.
En la imagen de arriba, comenzar transacción indica que ha comenzado el proceso de guardar al usuario en la base de datos. Si todo está bien, la transacción se confirma y se devuelve el valor booleano verdadero.
4. Una forma más rápida de crear y guardar un nuevo usuario en la base de datos es usar el método create de la siguiente manera user = User.create(name: 'Henry'). Este método hace el doble trabajo de crear y guardar el objeto en la base de datos.
Un aspecto importante de la creación de modelos de rieles es validar la presencia de los atributos de esos modelos. Esto evita que se guarden objetos no válidos en la base de datos. La siguiente imagen muestra un usuario sin un atributo de nombre que se guardó correctamente en la base de datos.
No puedo pensar en una instancia en la que querríamos crear una aplicación que no requiera un atributo en particular, pero el atributo existe en la base de datos como una columna vacía.
5. Abra su archivo user.rb y agregue las siguientes validaciones: nombre, presencia: verdadero.
Este ayudante de validación garantiza que no se guarde nada en la base de datos si no está presente un atributo de nombre.
Cree otro usuario con User.new. No complete el nombre del usuario, luego haga un usuario. ahorrar. El resultado de salida debe ser falso , lo que significa que nuestro usuario no pudo guardar.
Para verificar por qué nuestro guardado de base de datos fue falso, haga user.errors.any?
La salida en el terminal debe ser el valor booleano verdadero que indica que se encontraron errores. Para enumerar los errores, haga user.errors.full_messages , que devuelve una lista de errores como la siguiente:
Ahora, agregamos un método pertenece_a al modelo Artículo. Sin él, la relación entre el usuario y los modelos del artículo es medio completa.
Abra artículo.rb y agregue pertenece_a: usuario dentro de la clase, agregue validaciones también, es decir , valida: título, presencia: verdadero y valida: cuerpo, presencia: verdadero
Cree un nuevo artículo utilizando el nuevo método y guárdelo en la base de datos. El artículo se guarda correctamente.
La consola de Rails también se puede utilizar para consultar en la base de datos todos los artículos que se han creado o todos los usuarios que existen en la base de datos mediante el método de recuento .
Si queremos una lista de artículos creados por el primer usuario, podemos hacer user = User.first para obtener el usuario cuyo user_id == 1 y luego hacer user.articles que devuelve una matriz de artículos creados por el primer usuario.
En nuestro caso, obtenemos un error que dice que no hay ninguna columna en la base de datos con el nombre de columna artículos.id_usuario
Tener un método pertenece_a no muestra qué usuario escribió qué artículo. Se necesita un user_id en la tabla de artículos para asignar cada artículo a un usuario en particular. Esto se hace agregando una columna user_id como clave externa en la tabla del artículo.
En Rails 5 y superiores, use el comando Rails generar migración add_references_to_articles usuario: referencias
Haga un db de rieles: migrar para migrar el archivo que se generó. Si abre el esquema, verá que se ha agregado una nueva columna user_id de tipo entero. El esquema se modificará de la siguiente manera:
Podemos configurar el primer artículo que creamos en la consola para que pertenezca al primer usuario de la siguiente manera:
Ahora podemos escribir usuario = Usuario.primero y luego usuario.artículos para obtener una lista de los artículos creados por el primer usuario. También puede consultar en la base de datos el número total de artículos que posee el primer usuario con user.articles.count
Creo que ahora tiene una mejor comprensión de la consola de Rails y espero que no le dé tanto miedo abrir su terminal, haga Rails c . Comienza a jugar con los modelos y métodos de tu aplicación.
Hay otros métodos que se pueden usar en la consola para probar diferentes cosas, como el método de búsqueda , pero espero que esto lo inspire a aprender más sobre la consola de Rails.
El código fuente de este tutorial se puede encontrar en mi GitHub , deja un ⭐️ en el repositorio si te gusta el tutorial o lo encuentras útil.
Publicado anteriormente en https://medium.com/@lukoyedith/a-step-by-step-guide-to-using-the-rails-console-to-test-rails-models-associations-and-validations-986f4825aadf