Active Record é o componente do framework Ruby on Rails responsável pela comunicação com o banco de dados relacional. Uma de suas funcionalidades mais importantes são as validações, que permitem garantir a integridade dos dados antes de serem salvos no banco.
As validações no Active Record são implementadas através de uma variedade de helpers e métodos que permitem verificar se os dados são válidos de acordo com critérios específicos definidos pelo desenvolvedor. Essas validações são executadas tanto no lado do servidor quanto do cliente, fornecendo uma camada adicional de segurança e integridade aos dados.
Existem várias maneiras de definir validações no Active Record. Uma delas é utilizando os chamados “validations helpers”, que são métodos como validates_presence_of, validates_length_of, validates_numericality_of, entre outros. Esses helpers permitem validar se um atributo está presente, sua extensão, se é numérico, e uma variedade de outras condições.
Além dos helpers de validação básicos, o Active Record também oferece suporte a validações personalizadas, onde o desenvolvedor pode definir suas próprias regras de validação através do método validate e uma função de validação personalizada.
Por exemplo, suponha que tenhamos um modelo User com um atributo email, e queremos garantir que o email seja único no banco de dados. Podemos fazer isso utilizando a validação validates_uniqueness_of:
rubyclass User < ApplicationRecord
validates_uniqueness_of :email
end
Isso garantirá que nenhum usuário seja salvo no banco de dados com o mesmo endereço de email de outro usuário existente.
Outra validação comum é a de presença de um atributo, ou seja, garantir que um determinado campo não esteja em branco. Isso pode ser feito usando o helper validates_presence_of:
rubyclass Product < ApplicationRecord
validates_presence_of :name, :description, :price
end
Com essa validação, o Active Record garantirá que nenhum produto seja salvo no banco de dados sem um nome, descrição e preço definidos.
Além dessas validações básicas, o Active Record oferece suporte a uma ampla gama de validações, como validação de formato (por exemplo, para garantir que um campo de email tenha um formato válido), validação de associações (para garantir que uma associação esteja presente), validação de inclusão (para garantir que um atributo esteja incluído em uma lista específica de valores), entre outras.
É importante ressaltar que as validações no Active Record são executadas automaticamente sempre que um registro é criado ou atualizado, e qualquer violação das regras de validação resultará em uma exceção sendo lançada e o registro não sendo salvo no banco de dados.
Além disso, as validações no Active Record também são altamente configuráveis, permitindo que o desenvolvedor personalize o comportamento das validações conforme necessário. Isso inclui a possibilidade de personalizar as mensagens de erro, definir condições de validação condicionais e até mesmo desativar temporariamente as validações em determinadas situações.
Em resumo, as validações no Active Record são uma ferramenta poderosa para garantir a integridade e consistência dos dados em uma aplicação Rails, permitindo que os desenvolvedores definam regras de validação personalizadas e garantam que apenas dados válidos sejam salvos no banco de dados. Ao utilizar as validações de forma eficaz, os desenvolvedores podem melhorar significativamente a qualidade e confiabilidade de suas aplicações Rails.
“Mais Informações”

Claro! Vamos aprofundar um pouco mais sobre as validações no Active Record e explorar alguns exemplos adicionais e conceitos relacionados.
- Validações de Formato: O Active Record oferece suporte à validação de formato, que permite garantir que um atributo siga um padrão específico. Isso é útil para campos como email, telefone, CPF, entre outros. Por exemplo:
rubyclass User < ApplicationRecord
validates_format_of :email, with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
end
Essa validação garantirá que o atributo email siga o formato de um endereço de email válido.
- Validações de Exclusão/Inclusão: Você pode validar se um atributo está incluído ou excluído de uma lista específica de valores. Por exemplo:
rubyclass Product < ApplicationRecord
validates_inclusion_of :status, in: %w(active inactive)
end
Esta validação garantirá que o atributo status só possa ter os valores “active” ou “inactive”.
- Validações de Número Mínimo e Máximo: Você pode validar o tamanho de um atributo, seja em relação ao comprimento de uma string ou ao valor numérico. Por exemplo:
rubyclass Post < ApplicationRecord
validates_length_of :title, minimum: 5, maximum: 100
validates_numericality_of :rating, greater_than_or_equal_to: 0, less_than_or_equal_to: 5
end
Essas validações garantirão que o título do post tenha entre 5 e 100 caracteres, e que o atributo rating seja um número entre 0 e 5.
- Validações de Associação: Você pode validar a presença de uma associação, garantindo que um registro esteja associado a outro. Por exemplo:
rubyclass Order < ApplicationRecord
belongs_to :customer
validates_presence_of :customer
end
Essa validação garantirá que cada pedido esteja associado a um cliente.
Além desses exemplos, o Active Record oferece muitas outras opções de validação, incluindo a capacidade de criar validações personalizadas usando o método validate, como mencionado anteriormente.
Outro conceito importante relacionado às validações é o uso de callbacks. Os callbacks são métodos que são chamados em determinados pontos do ciclo de vida de um objeto Active Record, como antes de salvar, depois de salvar, antes de validar, entre outros. Os callbacks podem ser usados para executar lógica adicional, como a formatação de dados antes de salvar ou a execução de verificações adicionais antes de validar um registro.
Por exemplo, você pode usar um callback before_save para formatar um campo antes de salvar:
rubyclass User < ApplicationRecord
before_save :format_email
private
def format_email
self.email = email.downcase.strip
end
end
Este callback garantirá que o email seja convertido para minúsculas e remova espaços em branco antes de ser salvo no banco de dados.
Em resumo, as validações e os callbacks são ferramentas poderosas no arsenal do desenvolvedor Rails, permitindo garantir a integridade dos dados e adicionar lógica adicional ao ciclo de vida dos objetos Active Record. Ao entender e utilizar esses recursos de forma eficaz, os desenvolvedores podem criar aplicativos Rails robustos e de alta qualidade.

