Ist es generell besser (und warum), Attribute im Modell oder in der Datenbankdefinition zu validieren?Ruby on Rails: Ist es besser, im Modell oder in der Datenbank zu validieren?
Für (triviales) Beispiel:
Im Benutzermodell:
validates_presence_of :name
im Vergleich zu in der Migration:
t.string :name, :null => false
Auf der einen Seite, einschließlich dem sie in der Datenbank scheint mehr eine Garantie gegen jede Art von schlechten Daten schleichen sich ein. Auf der anderen Seite, macht es in das Modell ein, macht Dinge transparenter und leichter zu verstehen, indem man es im Code mit dem Rest gruppiert f die Validierungen. Ich habe auch darüber nachgedacht, beides zu tun, aber das scheint sowohl untrocken als auch weniger pflegeleicht zu sein.
Sie schlagen mich um 20 Sekunden;) – Aurril
Ich stimme mit der Validierung von Einschränkungen an beiden Orten (ich benutze PostgreSQL und die sexy_pg_constraints http://github.com/maxim/sexy_pg_constraints Plugin für diese), aber es ist nicht völlig richtig, dass Wenn Sie Ihre In-Modelle validieren, wird eine Datenbankabfrage gespeichert. Zum Beispiel muss 'validates_uniqueness_of' eine DB-Abfrage durchführen. –