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?

Réponses:



248

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

change_column_null :users, :address, true

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.