Em uma configuração típica do Mongodb, pode haver um atraso entre quando uma gravação de banco de dados retorna com sucesso e quando esses dados podem ser lidos. Há duas razões para isso:
- Para ganhos de desempenho, uma gravação "insegura" pode retornar antes que os dados sejam confirmados no disco.
- O Mongodb usa conjuntos de réplicas e há um atraso na replicação. Geralmente, as leituras são distribuídas para as réplicas como uma forma de balanceamento de carga, portanto, mesmo se você usar uma gravação segura, poderá estar lendo de um servidor diferente daquele em que acabou de gravar e, portanto, não verá os dados que acabou de gravar.
Para garantir que você sempre possa ler imediatamente os dados que acabou de escrever usando o Mongoid, você precisa definir as opções de sessão do banco de dados
consistency: :strong, safe: true
, nenhum dos quais é o padrão.