Est-il généralement préférable (et pourquoi) de valider les attributs dans le modèle ou dans la définition de la base de données?Ruby on Rails: Vaut-il mieux valider dans le modèle ou la base de données?
Pour (un trivial) exemple:
Dans le modèle utilisateur:
validates_presence_of :name
par rapport à la migration:
t.string :name, :null => false
D'une part, y compris dans la base de données semble D'autre part, l'inclure dans le modèle rend les choses plus transparentes et plus faciles à comprendre en les regroupant dans le code avec le reste. f les validations. J'ai également envisagé de faire les deux, mais cela semble à la fois non-DRY et moins maintenable.
Vous me battez en 20 secondes;) – Aurril
Je suis d'accord avec les contraintes de validation dans les deux endroits (j'utilise PostgreSQL et le plugin sexy_pg_constraints http://github.com/maxim/sexy_pg_constraints pour cela) mais il n'est pas totalement vrai que valider votre dans les modèles permettra d'enregistrer une requête DB. Par exemple, 'validates_uniqueness_of' doit faire une requête DB. –