Frage

Ich verwende rspec für die Prüfung und hornsby Szenarien für Objektdiagramme in Tests verwendet.

Ist es gute Praxis Zähler Cache Spalten auf 0 Wert zu initialisieren, anstatt sie nicht initialisierte (nil) zu verlassen? Oder sollte ich Standardwert in Migrationen definieren, die diese Zähler Cache Spalten erstellen?

War es hilfreich?

Lösung

Ja, Sie sollten den Standardwert festgelegt. Ansonsten haben Sie zu Sonderfall mathematischer Operationen NULLs zu behandeln.

Angenommen, Sie haben eine Reihe von Post-Objekte hatte und man wollte die Anzahl der Kommentare erhalten summieren.

Wenn Sie initialisieren auf Null @posts.sum(&:comment_count) wird, aber wenn Sie nicht tun, ist es vielleicht nicht, weil es auf Null fehl.

Ich empfehle Definition Ihrer Spalte wie folgt aus:

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

Andere Tipps

Rails einfach die folgende SQL senden

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

Also entweder die DB weiß, dass nicht definiert 1 == 1 oder Rails eine Initialisierung der eigenen tut. In beiden Fällen dies wie ein stabiles Verhalten mir scheint, so stelle sie nicht auf Null gesetzt und die Arbeit sparen. Da Sie nicht in der Lage sein zu sehen, ob Sie die Initialisierung ohnehin tun (es funktioniert genauso ohne) wie werden Sie sie testen. Und wenn es nicht garantiert ist, indem Sie initialisiert werden, was haben Sie wirklich in Bezug auf die Zukunftssicherheit gewonnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top