Modelado de Aplicaciones con TDD en Rails

Clase 9 de 33Curso de Creación de APIs con Ruby on Rails

Resumen

Construye modelos sólidos en Rails aplicando TDD desde el primer paso. Aquí verás cómo se definen entidades clave, se corrigen referencias con precisión y se prepara el terreno para pruebas con RSpec, manteniendo un flujo claro y profesional.

¿Qué es TDD y cuándo conviene usarlo?

La idea central de TDD es simple: primero escribes las pruebas y luego implementas el código mínimo para pasarlas. Test Driven Development ayuda a enfocarse en el comportamiento esperado y a reducir errores.

  • Útil en proyectos pequeños o con requerimientos muy claros desde el inicio.
  • Menos adecuado cuando el feature es grande o incierto en su comportamiento final.
  • Comunidad de Rails con fuerte cultura de TDD y uso de RSpec.
  • Invitación abierta a investigar y compartir opiniones sobre TDD.

¿Cómo se generaron los modelos y se corrigieron las referencias?

El flujo inició creando el modelo de usuario y luego el de post, asegurando la asociación correcta. Un error común apareció al omitir la “s” en references y se mostró cómo revertir y rehacer la generación.

¿Qué campos tienen usuario y post?

  • Usuario: email (string), nombre (string), authentication_token (string) temporal para autenticación. Más adelante se planea usar OutZero y JSON Web Tokens.
  • Post: título, contenido, publicado (booleano) y referencia a usuario para la asociación.

¿Qué comando corrige una generación fallida?

  • Se usó el comando de reversión para deshacer modelos y migraciones mal generadas.
rails destroy model post
  • Luego se rehízo la generación del post usando correctamente references (con “s”).

¿Qué asociación se aseguró en post?

  • La corrección permitió que el modelo post incluyera el belongs to user.
# app/models/post.rb
class Post < ApplicationRecord
  belongs_to :user
end
  • Las migraciones resultantes incluyeron la referencia al usuario y la llave foránea.
  • Tras generar correctamente, se corrieron las migraciones para crear las tablas.

¿Qué comandos se mencionaron en consola?

  • Generación inicial del modelo usuario.
rails model user
  • Intento de generación del post y corrección posterior.
rails gmodel post
rails destroy model post
# luego rehacer usando references correctamente

¿Qué pruebas y migraciones quedaron listas para el flujo TDD?

Con la integración de RSpec en Rails, al generar un modelo se crea automáticamente el archivo de pruebas correspondiente. Así se alinea el desarrollo con el enfoque TDD desde el comienzo.

  • Pruebas de modelo listas para implementar expectativas de validaciones y asociaciones.
  • Migraciones aplicadas: tabla de usuarios con tres campos definidos y tabla de posts con referencia a usuario y llave foránea.
  • Asociación clave confirmada: post pertenece a usuario.

Habilidades y keywords trabajadas:

  • TDD: escribir pruebas antes del código.
  • RSpec: pruebas de modelos integradas con Rails.
  • Generadores de Rails: crear modelos y migraciones.
  • references vs reference: asegurar la llave foránea correcta.
  • belongs_to: asociación entre modelos.
  • Migraciones: creación de tablas y aplicación de cambios.
  • Reversión con destroy: deshacer cambios incorrectos con rapidez.

¿Tienes una postura clara sobre TDD en tu flujo de trabajo? Comparte tu experiencia y cuéntanos qué te ha funcionado mejor en proyectos grandes o con requerimientos cambiantes.