Menu Docs
Página inicial do Docs
/ / /
Mongoid
/

Validação

Nesta página

  • validates_uniqueness_of e opção :conditions
  • Read preference com validates_uniqueness_of

O Mongoid inclui ActiveModel::Validations para fornecer a validação básica, além de um validador associado e exclusivo adicional.

Consulte as Validações de registros ativos Guia Rails e ActiveModel::Validations documentação para obter mais informações.

O Mongoid se comporta de forma ligeiramente diferente do Active Record ao usar #valid? em dados já persistentes. O #valid? do Active Record executará todas as validações, enquanto o #valid? do Mongoid só executará validações em documentos que estejam na memória como uma otimização.

A opção :conditions para validates_uniqueness_of pode ser usada para fornecer condições adicionais a serem adicionadas à query do banco de dados em busca de documentos idênticos. Esta opção não influencia quando a validação é executada porque não é considerada quando o Mongoid recupera o valor presente do respectivo campo do modelo. Considere o seguinte exemplo:

class Band
include Mongoid::Document
field :name, type: String
field :year, type: Integer
validates_uniqueness_of :name, conditions: -> { where(:year.gte => 2000) }
end
# OK
Band.create!(name: "Sun Project", year: 2000)
# Fails validation because there is a band with the "Sun Project" name
# and year 2000 in the database, even though the model being created now
# does not have a year.
Band.create!(name: "Sun Project")

Para validar a exclusividade de um atributo, o Mongoid deve verificar se o valor desse atributo ainda não existe no banco de banco de dados. Se o Mongoid executar query de um membro secundário do conjunto de réplicas, existe a possibilidade de que ele esteja lendo dados obsoletos. Por esse motivo, as queries usadas para verificar uma validação validates_uniqueness_of sempre usam a preferência de leitura primary.

Voltar

Associações