web-dev-qa-db-fra.com

Rails Migration: Supprimer la contrainte

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 Rails migration pour autoriser les valeurs NULL pour le champ d'adresse. Autrement dit, après la migration, le tableau se présente comme suit:

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

Que dois-je faire pour supprimer la contrainte?

119
Jay Godse

Pas sûr que vous puissiez appeler t.address? Quoi qu'il en soit ... je voudrais utiliser change_column ainsi

change_column :users, :address, :string, :null => true

Docs ... http://apidock.com/Rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column

160
Paul Sturgess

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

change_column_null :users, :address, true
222
deepak