Question

J'utilise rspec pour les tests et Hornsby scénarios pour des graphes d'objets utilisés dans les tests.

est-il une bonne pratique pour initialiser compteur colonnes de cache à valeur 0 au lieu de les laisser initialisés (néant)? Ou dois-je définir la valeur par défaut des migrations qui créent ces contre-colonnes de cache?

Était-ce utile?

La solution

Oui, vous devez définir la valeur par défaut. Sinon, vous devez les opérations mathématiques de cas particuliers pour gérer les valeurs NULL.

Disons que vous aviez un tableau d'objets de poste et que vous vouliez obtenir résumer le nombre de commentaires.

Si vous initialisez à zéro @posts.sum(&:comment_count) va, mais si vous ne pas peut-être pas, car il échouera sur zéro.

Je recommande la définition de votre colonne comme ceci:

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

Autres conseils

Rails envoyer simplement l'instruction SQL suivante

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

Donc, soit le DB sait que non défini +1 == 1 ou Rails fait un peu d'initialisation propre. Dans les deux cas, cela semble être un comportement stable pour moi, donc ne pas les mettre à zéro et sauvegarder le travail. Puisque vous ne serez pas en mesure de voir si vous avez fait l'initialisation de toute façon (il fonctionne même sans) comment allez-vous tester. Et si ce n'est pas garanti d'être initialisé par vous qu'est-ce que vous avez vraiment gagné en termes d'Évolutivité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top