Como Crear Un CRUD Con Ruby on Rails 7 – Parte 2

Demo

En la parte anterior de este tutorial mencionamos que necesitas tener instalado Ruby en tu computadora para poder trabajar con el framework Ruby on Rails.

También instalamos Ruby on Rails, creamos un proyecto nuevo y lo probamos para verificar que se haya creado correctamente, asimismo instalamos Bootstrap para las vistas HTML.

En esta segunda parte continuamos con el tutorial Como Crear Un CRUD Con Ruby on Rails 7, vamos con ello.

Partes

Código Creado con el Lenguaje de Programación Ruby
El lenguaje de programación Ruby tiene una sintaxis limpia y sencilla

Para poder realizar las tareas CRUD, necesitamos configurar y preparar nuestra base de datos.

Base de Datos

Para este proyecto usaré la base de datos MySQL, usaré la gema mysql2 para poder conectar el sistema CRUD a la base de datos MySQL.

Ejecuto el siguiente comando para instalar la gema MySQL:

gem install mysql2 --platform=ruby -- --with-mysql-dir=c:/Ruby32-x64/msys64/mingw64

Using rubygems directory: C:/Users/jrclu/.local/share/gem/ruby/3.2.0
Temporarily enhancing PATH for MSYS/MINGW...
Using msys2 packages: mingw-w64-ucrt-x86_64-libmariadbclient
Building native extensions with: '--with-mysql-dir=c:/Ruby32-x64/msys64/mingw64'
This could take a while...
Successfully installed mysql2-0.5.5
Parsing documentation for mysql2-0.5.5
Installing ri documentation for mysql2-0.5.5
Done installing documentation for mysql2 after 0 seconds
1 gem installed

Con ello ya tenemos soporte para MySQL en Ruby on Rails.

Paso seguido voy a configurar la base de datos, mi base de datos la llamaré test y dentro de ella crearé una tabla llamada postres que me servirá para trabajar con las tareas CRUD (Create, Read, Update, Delete).

Tengo que decirle a Ruby on Rails como se llama la Base de Datos que usaré, para esto abro el archivo database.yml que se encuentra en config > database.yml:

/crud-rails-7 
├── /app  
├── /bin
├── /config
    ├── /environments
    ├── /initializers
    ├── /locales
    ├── application.rb 
    ├── boot.rb 
    ├── cable.yml
    ├── credentials.yml.enc
    ├── database.yml // Abre este archivo
    ├── environment.rb
    ├── importmap.rb
    ├── master.key 
    ├── puma.rb
    ├── routes.rb
    ├── storage.yml
├── /db
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├── .dockerignore
├── .gitattributes
├── .gitignore
├── .ruby-version
├── config.ru
├── Dockerfile
├── Gemfile // Este archivo 
├── Gemfile.lock
├── Rakefile
├── README.md

Dentro archivo database.yml agrego los siguiente valores en la sección development:

development:
  #<<: *default
  #database: db/development.sqlite3
  adapter: mysql2
  encoding: utf8
  database: test
  username: root
  password: 
  host: 127.0.0.1
  port: 3306

Tras agregar el código anterior, ya tengo conectado Ruby on Rails a mi base de datos MySQL llamada test.

Modelo

Creo el modelo que me permitirá usar mi tabla postres, voy a mi consola de comandos y ejecuto el siguiente comando para crear mi modelo postre, hasta la fecha de este Post, Ruby on Rails me pide que le de el nombre en singular a mi modelo, es decir postre y no postres:

rails g model postre

      invoke  active_record
      create    db/migrate/20240125003403_create_postres.rb
      create    app/models/postre.rb
      invoke    test_unit
      create      test/models/postre_test.rb
      create      test/fixtures/postres.yml

Cuando intente ejecutar el comando anterior me aparecio un error, indicándome que debo agregar manualmente la gema mysql2 a mi archivo Gemfile.

El archivo Gemfile que se encuentra en el directorio principal del proyecto en crud-rails-7 > Gemfile:

/crud-rails-7 
├── /app  
├── /bin
├── /config
├── /db
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├──  .gitignore
├──  .ruby-version
├──  config.ru
├──  Gemfile // Abre Este Archivo 
├──  Gemfile.lock
├──  package.json
├──  Rakefile
├──  Gemfile.lock
├──  README.md

Dentro del archivo Gemfile coloco la Gema de MySQL:

# Gema de MySQL
gem 'mysql2', '~> 0.5.5'

Cuando ejecuté el comando anterior para crear mi modelo postre puedes ver que en la terminal me indica que se me ha creado un archivo de migración llamado 20240125003403_create_postres.rb, el modelo con el nombre postre.rb, y 2 archivos de pruebas unitarias postre_test.rb y postres.yml, todos estos archivos Ruby on Rails los ha colocado en sus respectivas ubicaciones o directorios que se aprecian en la consola de comandos.

Migración

Vamos a definir los campos para la tabla postres en la base de datos, para esto voy a usar el archivo de migración llamado 20240125003403_create_postres.rb que se me creo cuando realice la creación del modelo, este archivo se encuentra en db > migrate > 20240125003403_create_postres.rb:

/crud-rails-7 
├── /app  
├── /bin
├── /config
├── /db
    ├── /migrate
        ├── 20240125003403_create_postres.rb // Archivo de Migración 
    ├── seeds.rb 
├── /lib
├── /log
├── /public
├── /storage
├── /test
├── /tmp
├── /vendor
├──  .gitignore
├──  .ruby-version
├──  config.ru
├──  Gemfile // Abre Este Archivo 
├──  Gemfile.lock
├──  package.json
├──  Rakefile
├──  Gemfile.lock
├──  README.md

Abro el archivo 20240125003403_create_postres.rb y agrego los campos para la tabla postres.

Estos campos serán nombre, precio, stock, img, url, timestamps y deleted_at. El campo t.timestamps me crea automáticamente los campos created_at y updated_at en la tabla postres.

class CreatePostres < ActiveRecord::Migration[7.1]
  def change
    create_table :postres do |t|
      # Campos de mi tabla 'postres' 
    	t.string :nombre
      t.string :precio
      t.string :stock
      t.string :img
      t.string :url
      t.timestamps
      t.column :deleted_at, :datetime, :limit => 6
    end
  end
end

Luego de definir los campos de mi tabla postres, procederé a crear la tabla en la base de datos, para ello ejecuto el siguiente comando:

 rake db:migrate 

== 20240125003403 CreatePostres: migrating ====================================
-- create_table(:postres)
   -> 0.0166s
== 20240125003403 CreatePostres: migrated (0.0171s) ===========================

Luego de ejecutar el comando anterior se me ha creado la tabla postres en mi base de datos test, si reviso mi base de datos mediante phpMyAdmin, puedo ver que se ha creado la tabla postres con los campos correspondientes:

Tabla postres creada correctamente en la base de datos para el sistema CRUD
La tabla postres tiene 9 campos o columnas

Hasta aquí ya tengo creada y configurada mi Base de Datos test con la tabla postres para el Sistema CRUD.

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 mencionados en este capitulo del tutorial pueden cambiar, esto no depende de nosotros, si no de los desarrolladores que dan soporte a Ruby, Ruby on Rails y a la gema mysql2, que suelen cambiar sus opciones de despliegue y configuración en futuras versiones.
  • En el siguiente capitulo continuaré con la creación del Controlador del Sistema CRUD y otros detalles.

 

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