Validaciones y consultas
Integridad de datos y consultas
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 saveValidació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
endFormato y longitud
Otros validadores integrados:
length: { minimum: 8 }para limitar el tamaño.format: { with: /regex/ }para validar patrones.numericality: truepara números.inclusion: { in: [...] }para valores permitidos.
class User < ApplicationRecord
validates :password, length: { minimum: 8 }
validates :age, numericality: { greater_than: 0 }
endvalid? 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
endsave frente a save!
Dos formas de guardar:
savedevuelvetrue/false, por lo que puede tomar decisiones según el resultado.save!generaRecordInvalidsi 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 invalidValidaciones 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
endConsultas 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)yoffset(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.adultsComprobació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?yerrorsinforman 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.
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
- Conceptos básicos de Active Record
- Migraciones
- Asociaciones
- Validaciones y consultas