Migrazione delle rotaie: rimuovere il vincolo


136

Ho una tabella in un'applicazione Rails che (in schema.rb) assomiglia a:

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

Vorrei scrivere una migrazione di rotaie per consentire valori null per il campo dell'indirizzo. cioè dopo la migrazione la tabella appare così:

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

Cosa devo fare per rimuovere il vincolo?

Risposte:



248

In Rails 4+ per rimuovere il vincolo non nullo, puoi usare change_column_null:

change_column_null :users, :address, true

Hai davvero provato questo? Se dai un'occhiata al codice sorgente della funzione, non vedi altro che:raise NotImplementedError, "change_column_null is not implemented"
drusepth

3
l'ho usato in postgresql. rails lo definisce nell'adattatore specifico del database vedi postgres , mysql . può cercare altri in apidock . Quindi, dovrà controllare l'adattatore del database per il supporto, nel caso qualcuno ottenga unNotImplementedError
deepak il

1
Upvote! Ecco anche il link alle guide di Rails .
McKain,

1
Questa dovrebbe essere la risposta selezionata
nahtnam
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.