Domanda

Sto usando RSpec per il test e Hornsby scenari per grafi di oggetti utilizzati nei test.

E 'buona pratica per inizializzare il contatore colonne di cache a 0 il valore invece di lasciare loro non inizializzata (zero)? O dovrei definire il valore di default nelle migrazioni che creano quelle colonne di cache contatore?

È stato utile?

Soluzione

Sì, è necessario impostare il valore di default. In caso contrario, si deve operazioni speciali caso matematiche per gestire i NULL.

Diciamo che ha avuto un array di oggetti postali e si voleva ottenere sommare il numero di commenti.

Se si inizializza a @posts.sum(&:comment_count) zero, ma se non si potrebbe non perché avrà esito negativo pari a zero.

Vi consiglio che definisce la vostra colonna in questo modo:

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

Altri suggerimenti

Rails devono semplicemente inviare il seguente SQL

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

Quindi, o il DB sa che indefinita 1 == 1 o Rails fa un po 'di inizializzazione del proprio. In entrambi i casi questo mi sembra un comportamento stabile a me, in modo da non metterli a zero e salvare il lavoro. Dal momento che non sarà in grado di vedere se avete fatto l'inizializzazione comunque (funziona lo stesso senza) come potrete provarlo. E se non è garantito per essere inizializzato da voi ciò che avete guadagnato davvero in termini di futuro proofing.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top