ich diese Wanderung lief:Schienen + Postgres Migration leerer String vs nil
def up
add_column :product_customers, :name, :string
add_column :product_customers, :email, :string
end
def down
remove_column :product_customers, :name, :string
remove_column :product_customers, :email, :string
end
Dann habe ich versucht, dieses zu laufen, aber hat nicht funktioniert:
def up
change_column_null :product_customers, :name, false
change_column_null :product_customers, :email, false
end
def down
change_column_null :product_customers, :name, true
change_column_null :product_customers, :email, true
end
Ich war überrascht und didn‘ Ich verstehe nicht, wie es möglich war. Dann schlug ich die Konsole auf und erkannte, dass der Wert der Felder nicht ""
sondern nil
war. Ich überprüfte dann ein paar andere Tabellen und sah, dass einige Tabellen und Felder ""
als Standard haben und einige nil
haben.
Ich möchte die leeren Zeichenfolgen in allen Tabellen haben. Also meine Fragen:
Wenn ich eine neue Migration erzeugen, wie kann ich sicherstellen, dass meine String-Typ Spalten
""
als Standard haben. Was zum Beispiel hätte ich in dem von mir bereitgestellten Code anders machen sollen?Was ist die Konvention, um die
nil
Werte zu""
für vorhandene Tabellen zu ändern?
Usbekjon, können Sie mir sagen, warum einige von ihnen "nil" waren und einige von ihnen waren ""? Ich habe den Standard nirgendwo festgelegt. –
Sie müssen es beim Erstellen in Ihrem Controller festgelegt haben, wo Ihr 'param [: field]' einen Wert von '' '' hatte. Die mit "Null" -Wert hätten anders erstellt werden können, ohne dass dieses "Feld" in den "Params" oder in der Rails-Konsole gesetzt wurde. – Uzbekjon
Eine letzte Frage. Verwenden Sie '' '' als Standard oder 'nil' für String-Spalten als Standard in Ihren Projekten? Sollte jemand an einem oder mehreren Fällen festhalten, wenn einer besser ist als der andere? –