Cómo configurar llave primaria como UUID en Rails

No hay nada de malo en la forma estándar de tener un entero como valor para las llaves primarias en las tablas de nuestras aplicaciones. Sin embargo, por seguridad cuando los registros suelen ser públicos, lo mejor es poner dichas llave como un campo UUID. A continuación muestro como.

Normalmente, nuestra migración la hacemos como:

$ rails g model User name:string dob:date

Eso creará la tabla users con el campo id de tipo entero como llave primaria. Ahora, si queremos que sea un UUID (una cadena de 32 dígitos en el sistema hexadecimal) primero tenemos que habilitar una extensión en PostgreSQL de esta forma:

$ rails g migration enable_pgcrypto_extension

Esto va a crear una nueva migración que deberemos ejecutar. La migración luce así normalmente:

class EnablePgcryptoExtension < ActiveRecord::Migration[5.1]
  def change
    enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto')
  end
end

Con dicha extensión habilitada podremos decirle a nuestras migraciones que las llaves primarias sean de tipo UUID.

Al crear una nueva tabla:

class CreateArticles < ActiveRecord::Migration[6.0]
  def change
    create_table :articles, id: :uuid do |t|
      t.references :author, type: :uuid, foreign_key:true
      t.string :name
      t.timestamps
    end
  end
end

o cuando se modifica o agrega una columna:

add_column :books, :user_id, :uuid

De esta forma se puede empezar a usar llaves primarias de tipo UUID para dar un toque más de seguridad a nuestros datos.

Fuentes:

Autor: cesc1989

Ingeniero de Sistemas que le gusta escribir y compartir sobre recursos que considera útiles, además que le gusta leer manga y ver anime.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: