Ruby Academy · Lección

Validaciones y consultas

Integridad de datos y consultas

Lección 4 de 413 pasos

Validaciones y consultas es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.

¿Por qué validar?

Las validaciones protegen sus datos antes de que lleguen a la base de datos. Se ejecutan al guardar un registro y rechazan los datos no válidos con mensajes útiles.

  • Evitan que entren datos incorrectos (nombres ausentes, correos electrónicos con formato incorrecto).
  • Se ejecutan en Ruby, por lo que es fácil mostrar los mensajes a los usuarios.
  • Complementan las restricciones de la base de datos, pero no las sustituyen.

Validación de presencia

La regla más común es validates :field, presence: true, que exige un valor no vacío. Si intenta guardar sin él, la operación falla y se registra un error.

class User < ApplicationRecord
  validates :name, presence: true
end

# User.create(name: "") fails to save

Validación de unicidad

uniqueness: true evita los valores duplicados, como dos usuarios con el mismo correo electrónico. Combínela con un índice único en la base de datos, porque la validación por sí sola tiene una condición de carrera cuando hay mucha concurrencia.

class User < ApplicationRecord
  validates :email, presence: true, uniqueness: true
end

Formato y longitud

Otros validadores integrados:

  • length: { minimum: 8 } para limitar el tamaño.
  • format: { with: /regex/ } para validar patrones.
  • numericality: true para números.
  • inclusion: { in: [...] } para valores permitidos.
class User < ApplicationRecord
  validates :password, length: { minimum: 8 }
  validates :age, numericality: { greater_than: 0 }
end

valid? y errors

Llame a valid? para ejecutar las validaciones sin guardar. Después de un guardado fallido, record.errors contiene los problemas y errors.full_messages proporciona cadenas legibles para la interfaz.

user = User.new(name: "")
if user.valid?
  user.save
else
  puts user.errors.full_messages
end

save frente a save!

Dos formas de guardar:

  • save devuelve true/false, por lo que puede tomar decisiones según el resultado.
  • save! genera RecordInvalid si falla, lo que resulta útil cuando los datos no válidos deben tratarse como una excepción.

El mismo patrón se aplica a create/create! y update/update!.

user.save   # => false if invalid
user.save!  # => raises if invalid

Validaciones personalizadas

Para reglas que van más allá de los validadores integrados, escriba un método y regístrelo con validate. Añada problemas mediante errors.add.

class User < ApplicationRecord
  validate :name_not_admin

  def name_not_admin
    if name == "admin"
      errors.add(:name, "cannot be admin")
    end
  end
end

Consultas con where

La interfaz de consultas comienza con where, que filtra filas. Devuelve una relación de evaluación diferida que puede encadenar con otras operaciones antes de que se consulte la base de datos.

User.where(active: true)
User.where("age > ?", 18)
User.where(role: ["admin", "editor"])

Ordenación y límites

Configure los resultados con métodos encadenables:

  • order(created_at: :desc) ordena los resultados.
  • limit(10) y offset(20) permiten paginar.
  • select(:id, :name) selecciona columnas.
User.where(active: true)
    .order(created_at: :desc)
    .limit(10)

Agregados y carga diferida

Los helpers de agregación ejecutan funciones de la base de datos: count, sum(:amount), average(:age), maximum, minimum. Las relaciones son diferidas; la consulta solo se ejecuta cuando se enumeran, se llama a un agregado o se usa to_a.

User.where(active: true).count
Order.sum(:total)
User.average(:age)

Scopes

Un scope da nombre a una consulta reutilizable para que pueda componerse de forma clara. Los scopes devuelven relaciones y pueden encadenarse entre sí y con where.

class User < ApplicationRecord
  scope :active, -> { where(active: true) }
  scope :adults, -> { where("age >= ?", 18) }
end

User.active.adults

Comprobación rápida

Compruebe cuánto entiende sobre las validaciones y las consultas.

Repaso: validaciones y consultas

Ha aprendido a proteger y obtener datos:

  • Las validaciones de presencia, unicidad, longitud y formato protegen los guardados.
  • valid? y errors informan de los problemas; save! genera una excepción.
  • Las validaciones personalizadas cubren reglas especiales.
  • where, order, limit, los agregados y los scopes permiten crear consultas diferidas.

Con esto termina el curso de Models y Active Record.

Gratis para empezar

Aprende Ruby con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
29
Lecciones
109

Preguntas frecuentes

¿La lección «Validaciones y consultas» es gratis?

Sí — el texto completo de «Validaciones y consultas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Validaciones y consultas»?

Integridad de datos y consultas Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ruby Academy?

No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Validaciones y consultas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?

Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de Active Record
  2. Migraciones
  3. Asociaciones
  4. Validaciones y consultas
← Volver a Ruby Academy