Validações e consultas
Integridade e consulta de dados.
Validações e consultas é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
Por que validar?
As validações protegem seus dados antes que eles cheguem ao banco de dados. Elas são executadas quando você salva um registro e rejeitam dados inválidos com mensagens úteis.
- Elas impedem a entrada de dados incorretos (nomes ausentes, e-mails malformados).
- São executadas em Ruby, portanto é fácil exibir as mensagens aos usuários.
- Complementam, mas não substituem, as restrições do banco de dados.
Validação de presença
A regra mais comum é validates :field, presence: true, que exige um valor não vazio. Tentar salvar sem ele falha e registra um erro.
class User < ApplicationRecord
validates :name, presence: true
end
# User.create(name: "") fails to saveValidação de unicidade
uniqueness: true impede valores duplicados, como dois usuários com o mesmo e-mail. Combine-a com um índice exclusivo no banco de dados, pois a validação sozinha está sujeita a uma condição de corrida sob alta concorrência.
class User < ApplicationRecord
validates :email, presence: true, uniqueness: true
endFormato e comprimento
Outros validadores integrados:
length: { minimum: 8 }para limites de tamanho.format: { with: /regex/ }para padrões.numericality: truepara números.inclusion: { in: [...] }para valores permitidos.
class User < ApplicationRecord
validates :password, length: { minimum: 8 }
validates :age, numericality: { greater_than: 0 }
endvalid? e errors
Chame valid? para executar as validações sem salvar. Depois de uma tentativa de salvamento malsucedida, record.errors contém os problemas, e errors.full_messages fornece textos legíveis para a interface.
user = User.new(name: "")
if user.valid?
user.save
else
puts user.errors.full_messages
endsave versus save!
Há dois estilos de salvamento:
saveretornatrue/false, permitindo que você tome uma decisão com base no resultado.save!geraRecordInvalidquando falha, o que é útil quando dados inválidos devem resultar em uma exceção.
O mesmo padrão se aplica a create/create! e update/update!.
user.save # => false if invalid
user.save! # => raises if invalidValidações personalizadas
Para regras que vão além dos validadores integrados, escreva um método e registre-o com validate. Adicione problemas usando 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 com where
A interface de consulta começa com where, que filtra as linhas. Ela retorna uma relação avaliada sob demanda, que você pode encadear antes de a consulta chegar ao banco de dados.
User.where(active: true)
User.where("age > ?", 18)
User.where(role: ["admin", "editor"])Ordenação e limitação
Estruture os resultados com métodos encadeáveis:
order(created_at: :desc)faz a ordenação.limit(10)eoffset(20)fazem a paginação.select(:id, :name)seleciona as colunas.
User.where(active: true)
.order(created_at: :desc)
.limit(10)Agregações e carregamento sob demanda
Os auxiliares de agregação executam funções do banco de dados: count, sum(:amount), average(:age), maximum, minimum. As relações são avaliadas sob demanda; a consulta só é executada quando você as percorre, chama uma agregação ou usa to_a.
User.where(active: true).count
Order.sum(:total)
User.average(:age)Escopos
Um scope dá nome a uma consulta reutilizável para que você possa combiná-la de forma organizada. Os escopos retornam relações e podem ser encadeados entre si e com where.
class User < ApplicationRecord
scope :active, -> { where(active: true) }
scope :adults, -> { where("age >= ?", 18) }
end
User.active.adultsVerificação rápida
Teste sua compreensão sobre validações e consultas.
Recapitulação: validações e consultas
Você aprendeu a proteger e buscar dados:
- Validações como presença, unicidade, comprimento e formato protegem as operações de salvamento.
valid?eerrorsinformam os problemas;save!gera uma exceção.- Validações personalizadas abrangem regras específicas.
where,order,limit, agregações e escopos formam consultas avaliadas sob demanda.
Isso conclui o curso de Modelos e Active Record.
Aprenda Ruby com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 29
- Aulas
- 109
Perguntas Frequentes
A aula “Validações e consultas” é grátis?
Sim — o texto completo de “Validações e consultas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Validações e consultas”?
Integridade e consulta de dados. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Validações e consultas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos do Active Record
- Migrações
- Associações
- Validações e consultas