Schienenmigration: Einschränkung entfernen


135

Ich habe eine Tabelle in einer Rails-Anwendung, die (in schema.rb) wie folgt aussieht:

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

Ich möchte eine Rails-Migration schreiben, um Nullen für das Adressfeld zuzulassen. dh nach der Migration sieht die Tabelle folgendermaßen aus:

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

Was muss ich tun, um die Einschränkung zu entfernen?

Antworten:



247

In Rails 4+ können Sie Folgendes verwenden, um die Nicht-Null-Einschränkung zu entfernen change_column_null:

change_column_null :users, :address, true

Hast du das tatsächlich versucht? Wenn Sie sich den Quellcode für die Funktion ansehen, sehen Sie nichts als:raise NotImplementedError, "change_column_null is not implemented"
Drusepth

3
habe es in postgresql verwendet. Rails definiert es im datenbankspezifischen Adapter, siehe postgres , mysql . kann in apidock nach anderen suchen . Also muss der Datenbankadapter auf Unterstützung überprüft werden, falls jemand einenNotImplementedError
deepak

1
Upvote! Hier ist auch der Link zu den Rails-Guides .
McKain

1
Dies sollte die ausgewählte Antwort sein
nahtnam
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.