Question

J'ai la migration de rails suivante:

create_table :articles do |t|
  t.integer :user_id, :allow_null => false
  t.integer :genre_id, :allow_null => false
  t.string :url, :limit => 255, :allow_null => false
  t.string :title, :limit => 60, :allow_null => false
  t.text :summary, :limit => 350, :allow_null => false
  t.integer :votes_count, :default => 0
  t.datetime :published_at, :default => nil
  t.timestamps
end

Tous les champs "NOT NULL" sont d'abord validés dans le modèle, alors je me demande si j'ai besoin de m'inquiéter d'avoir allow_null dans la migration? Je ne sais pas quels sont les avantages " NOT NULL " donne à la base de données, le cas échéant.

Était-ce utile?

La solution

Pas grand-chose si vous voulez dire en termes de performances ou d’efficacité du stockage. Toutefois, il est judicieux de placer autant de contraintes de bas niveau que vous le souhaitez dans la couche base de données. D'une part, cela garantit qu'un bogue subtil dans Rails ne conduira pas à des données aléatoires NULL dans un champ non nul. De même, si vous exécutez une autre application avec la même base de données, il sera extrêmement utile de disposer des contraintes dans un emplacement central pour la maintenance et éviter les doublons.

Autres conseils

NOT NULL est une dernière chose où l'ordinateur peut vous surveiller et vous empêcher de commettre des erreurs.

Cela ne semble pas affecter mySQL, mais vous devez être conscient de 2 problèmes de migration récemment résolus (un lorsque vous ne spécifiez pas par défaut)

http://blog.codefront.net/2008/05/04/living-on-the-edge-of-rails-19-change_table-for-migrations-and-more/

http: // antoniocangiano.com/2008/07/14/a-close-look-at-three-rails-21-bugs/

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