Contenido del curso
Gestión de modelos en el backend con el ORM Diesel
- 2

Qué es un ORM y por qué usar Diesel
02:55 min - 3

Errores Comunes al Instalar y Usar Diesel en Rust
00:31 min - 4

Instala Diesel ORM en tu proyecto Rust
05:16 min - 5

Modelo Post con Diesel y PostgreSQL
14:22 min - 6

Cómo insertar datos en Diesel con Rust
07:55 min - 7

Queries SELECT con filtros en Diesel
08:16 min - 8

Cómo editar registros con Diesel en Rust
04:40 min - 9

Borrar registros en Diesel con filtros
Viendo ahora
Actix web framework (controlador)
Tera templates (vistas)
Despliegue del proyecto
Continúa tu aprendizaje
Borrar registros en Diesel con filtros
Resumen
Eliminar registros en una base de datos es la última operación del CRUD que te falta dominar, y con Diesel ORM en Rust resulta sorprendentemente directo. Aquí aprenderás cómo borrar uno o varios posts usando filtros por id, por slug y hasta con patrones de búsqueda parciales, todo pensado para quienes ya manejan creación, lectura y actualización de datos.
Cómo elimino un registro específico con Diesel
Cuando un registro ya no te sirve, puedes borrarlo con una sola línea encadenada. La función central es diesel::delete, que recibe la tabla filtrada por la condición que tú definas.
Para eliminar el tercer post del ejemplo, el flujo se ve así:
- Llamas a
diesel::deletesobreposts.filter(...). - Aplicas un filtro, por ejemplo
slug.eq("tercer-post"). - Ejecutas con
.execute(connection). - Manejas el error con un mensaje tipo ha fallado la eliminación del tercer post.
Fíjate en un detalle que aparece en la práctica: el nombre de la tabla es posts, en plural. Un typo tan pequeño como escribir post en singular rompe la consulta, así que revisa siempre el esquema generado por Diesel.
¿Qué hace diesel::delete en Rust? Construye una sentencia SQL
DELETEa partir de una tabla y un filtro encadenado. Solo se ejecuta cuando llamas a.execute()pasándole la conexión.
Por qué puedo filtrar por slug y no solo por id
El id suele ser el filtro más común, pero Diesel te deja usar cualquier columna indexable. El slug funciona igual de bien porque es único y legible, lo que ayuda cuando estás depurando en consola y quieres saber exactamente qué registro estás tocando.
La mecánica es la misma: cambias id.eq(...) por slug.eq("tercer-post") y el resto del encadenamiento se mantiene intacto.
Cómo borro varios registros a la vez con un patrón
Eliminar uno por uno no escala. Si necesitas barrer un grupo de filas que comparten algo en su contenido, Diesel te ofrece like, el mismo operador que ya conoces de SQL.
En lugar de slug.eq(...), usas slug.like("%post%") y el patrón hace el trabajo. En el ejemplo, todos los registros tenían la palabra post en su slug, así que la operación dejó la tabla vacía. Es una demostración clara de lo poderoso (y peligroso) que puede ser un filtro mal acotado.
¿Cuándo uso like en vez de eq? Usas
likecuando buscas coincidencias parciales con comodines como%. Usaseqcuando necesitas una igualdad exacta contra un valor concreto.
Qué riesgos tiene un delete con like demasiado abierto
Un patrón como %post% parece inofensivo hasta que descubres que coincide con todo. Antes de ejecutar un delete masivo conviene que:
- Corras primero un
selectcon el mismo filtro para ver qué vas a borrar. - Confirmes que el patrón no incluya prefijos o sufijos comunes.
- Tengas un respaldo o un seed para repoblar la tabla si te equivocas.
Esta última recomendación no es teórica. En el ejemplo, después de borrar todo tocó repoblar manualmente, y por eso vale la pena tener scripts de inserción listos desde el inicio del proyecto.
Qué sigue después de cerrar el módulo de ORM
Con delete cierras el ciclo CRUD completo en Diesel: crear, leer, actualizar y eliminar. Ya tienes las cuatro operaciones que sostienen cualquier aplicación que hable con una base de datos relacional desde Rust.
Antes de avanzar, hay un reto pendiente: repoblar la tabla posts con los registros que acabas de borrar, porque vas a necesitarlos para conectar tu base de datos con un framework web. El siguiente paso es Actix Web, donde tu ORM dejará de vivir solo en la consola y empezará a responder peticiones HTTP reales.
¿Ya tienes listo tu seed para repoblar la tabla? Cuéntame en los comentarios cómo organizas tus inserciones iniciales.