Pergunta

Eu estou usando rspec para testar e cenários Hornsby para gráficos de objetos usados ??em testes.

É uma boa prática para colunas de cache contra initialize para 0 valor em vez de deixá-los não inicializado (zero)? Ou devo definir valor padrão em migrações que criam essas colunas de cache contador?

Foi útil?

Solução

Sim, você deve definir o valor padrão. Caso contrário, você tem que operações especiais caso matemática para NULLs punho.

Vamos dizer que você tinha um array de objetos postais e você quisesse obter somar o número de comentários.

Se você inicializar a @posts.sum(&:comment_count) zero, mas se você não fazê-lo pode não porque ele vai falhar em nada.

Eu recomendo definir sua coluna como esta:

add_column :posts, :comments_count, :integer, :default => 0, :null => false

Outras dicas

Rails simplesmente enviar o seguinte SQL

UPDATE posts SET comment_count = comment_count + 1, WHERE id IN (10, 15)

Assim, ou o DB sabe que indefinido +1 == 1 ou Rails faz alguma inicialização próprio. Em ambos os casos este parece ser um comportamento estável para mim, então não colocá-las a zero e salvar o trabalho. Desde que você não será capaz de ver se você fez a inicialização de qualquer maneira (ele funciona exatamente o mesmo sem) como você vai testá-lo. E se não é garantido para ser inicializado por você o que você realmente ganhou em termos de futuro prova.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top