Crear modelos en Rails

Por Andrés Howard | June 23

Un modelo es una clase de Ruby que representa los datos que usamos en nuestra aplicación. Suele estar respaldado por una tabla en la base de datos (aunque no siempre). Para crear un modelo respaldado por una tabla en la base de datos tenemos que

  1. Crear la tabla en la base de datos mediante una migración,
  2. Crear el archivo del modelo.

El primer paso de crear la migración se hace ejecutando en el terminal el siguiente comando, que ejecuta un generador de Rails:

bin/rails generate migration AddTableUsers

donde AddTable es el nombre que le dimos a la migración pero puede cambiar. Este comando va a generar una migración que se va a almacenar en la capeta db/migrations y cuyo nombre será un timestamp seguido del nombre que le dimos en formato snake_case. Dentro de la migración tenemos que crear la tabla de la siguiente manera:

# db/migrate/timestamp_add_table_users.rb
class AddTableUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      t.string :first_name, null: false, default: ''
      t.string :last_name, null: false, default: ''
      t.timestamps
    end
  end
end

Esto nos va a generar una tabla llamada users con los campos first_name, last_name y además dos timestamps: created_at y updated_at. Para que se apliquen los cambios tenemos que ejecutar las migraciones:

bin/rails db:migrate

Luego, tenemos que generar el archivo del modelo. Para esto creamos el archivo app/models/user.rb y adentro definimos la clase User:

# app/models/user.rb
class User < ApplicationRecord
  validates :first_name, presence: true
  validate :last_name, presence: true
end

Con esto tenemos definido el modelo User y la respectiva tabla en la base de datos.