Creación de Scaffolds y Modelos en Rails con SimpleFrame y Bootstrap

Clase 20 de 36Curso de Introducción a Ruby on Rails

Resumen

¿Cómo construir scaffolds y trabajar con modelos en Rails?

¡Vamos a adentrarnos en el emocionante mundo de Rails y crear nuestros primeros scaffolds! Hoy construiremos los modelos de tarea y categoría, y los potenciaremos con un sistema de internación para sus vistas. Iniciaremos instalando las herramientas necesarias y luego procederemos con la creación de estos modelos. Sin más preámbulos, ¡vamos a ello!

¿Cómo preparamos el entorno?

Antes de comenzar a crear scaffolds, debemos preparar nuestro entorno frontend con SimpleFrame y Bootstrap:

  1. Instalar el preset Bootstrap:

    simpleframe 2.install --preset=bootstrap
    

    Esto genera el archivo SimpleFrame Bootstrap, simplificando la integración de nuestras vistas con Bootstrap.

¿Cómo generamos los modelos de categoría y tarea?

Primero, vamos a crear el scaffold para el modelo categoría, ya que cada tarea pertenecerá a una categoría. El modelo categoría incluye una descripción y un nombre, que podemos definir como de tipo string. Sin embargo, podrías optar por text para la descripción si necesitas una longitud mayor.

  1. Generar scaffold para categoría:
    rails generate scaffold Categoria nombre:string descripcion:string
    

Después, construiremos el scaffold para el modelo tarea, que también contiene un nombre, una descripción y una fecha de vencimiento. Además, cada tarea estará asociada a una categoría, lo cual implementaremos usando el tipo references.

  1. Generar scaffold para tarea:
    rails generate scaffold Tarea nombre:string descripcion:string fecha_vencimiento:date categoria:references
    

¿Cómo migramos las tablas a la base de datos?

Para ejecutar nuestras migraciones, necesitamos ajustar nuestro acceso a la base de datos configurando PostgreSQL, ya que estamos usando este sistema en lugar de SQLite:

  1. Configurar PostgreSQL:

    • Edita el archivo config/database.yaml.
    • En las secciones development y test, configura host, user y password.

    Ejemplo:

    development:
      host: localhost
      user: platzi
      password: platzi
    
  2. Ejecutar migraciones:

    rails db:migrate
    

¿Cómo establecemos relaciones entre modelos?

El autogenerador de Rails crea una relación belongs_to entre tarea y categoría automáticamente. No obstante, para reflejar que una categoría puede tener muchas tareas, debemos modificar el modelo Category agregando has_many :tasks.

  1. Modificar el modelo Categoría:
    • En app/models/categoria.rb, añade:
      has_many :tareas
      

¿Cómo anotamos nuestros modelos para mayor claridad?

Rails nos permite utilizar la gema annotate para documentar mejor los atributos y columnas de los modelos.

  1. Instalar y utilizar annotate:

    • Añade gem 'annotate' al Gemfile.
    • Ejecuta:
      bundle install
      annotate --models
      

    Esto proporcionará información descriptiva sobre ambos modelos en sus respectivos archivos.

¿Cómo corremos la aplicación y probamos el resultado?

Finalmente, podemos ejecutar nuestro servidor Rails y comprobar las funcionalidades creadas en nuestro navegador:

  1. Iniciar el servidor:

    rails server
    
  2. Acceder a nuestras rutas:

    • Abre un navegador y visita localhost:3000.
    • Usa las rutas /tareas y /categorias para ver las listas de tareas y categorías.

Con todo esto, hemos establecido un sistema básico en Rails utilizando modelos bien estructurados e integraciones eficientes con Bootstrap. ¡Sigue explorando y aprendiendo para llegar a construir grandes proyectos en Rails!