Migration des rails: supprimer la contrainte

136

J'ai une table dans une application Rails qui (dans schema.rb) ressemble à:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address", :null=>false
end

Je voudrais écrire une migration de rails pour autoriser les valeurs nulles pour le champ d'adresse. c'est-à-dire qu'après la migration, le tableau ressemble à ceci:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address"
end

Que dois-je faire pour supprimer la contrainte?

Jay Godse
la source

Réponses:

248

Dans Rails 4+, pour supprimer la contrainte non nulle, vous pouvez utiliser change_column_null:

change_column_null :users, :address, true
deepak
la source
Avez-vous réellement essayé cela? Si vous regardez le code source de la fonction, vous ne voyez rien d'autre que:raise NotImplementedError, "change_column_null is not implemented"
drusepth
3
l'ont utilisé dans postgresql. rails le définit dans l'adaptateur spécifique à la base de données, voir postgres , mysql . peut en rechercher d'autres dans apidock . Donc, devra vérifier l'adaptateur de base de données pour le support, au cas où quelqu'un obtiendrait unNotImplementedError
deepak
1
Upvote! Voici également le lien vers les guides Rails .
mcKain
1
Cela devrait être la réponse choisie
nahtnam