Ruby Academy · Aula

Validações e consultas

Integridade e consulta de dados.

Aula 4 de 413 etapas

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 save

Validaçã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
end

Formato e comprimento

Outros validadores integrados:

  • length: { minimum: 8 } para limites de tamanho.
  • format: { with: /regex/ } para padrões.
  • 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? 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
end

save versus save!

Há dois estilos de salvamento:

  • save retorna true/false, permitindo que você tome uma decisão com base no resultado.
  • save! gera RecordInvalid quando 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 invalid

Validaçõ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
end

Consultas 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) e offset(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.adults

Verificaçã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? e errors informam 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.

Grátis para começar

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

  1. Fundamentos do Active Record
  2. Migrações
  3. Associações
  4. Validações e consultas
← Voltar para Ruby Academy