varchar Migration Frage für Ruby on Rails
-
12-09-2019 - |
Frage
Ich habe eine neue Tabelle mit einer Spalte „Anmerkung“ erstellt. Der Standardwert ist varchar (255) Ich glaube, aber ich wünschte, diese Spalte zu haben, ein Textbereich gegen ein Feld zu sein, und um weitere Daten zu ermöglichen. Ich stelle mir vor, dass ich diese Änderung in Activerecord :: Migration Datei machen, aber ich bin neugierig, wie das Format. Wechsle ich einfach die varchar (255) zu varchar (1000) zum Beispiel? (Wenn ja, was ist das Format?
def self.up
create_table :notes do |t|
t.string :note :varchar(1000)
end
Ist das das richtige Format? Darüber hinaus, wie bekomme ich das Eingabefeld mehrere Zeilen zu sein. Sorry, wenn dies ist einfach Sachen, aber ich bin neu in der Programmierung und RoR. Vielen Dank.
Lösung
Sie können einfach verwenden Sie den Typ 'Text' anstelle von 'String'.
def self.up
create_table :notes do |t|
t.text :note
end
end
Mit dem Typ ‚Text‘ wird in Datenbankspalte vom Typ TEXT führen. Varchar wird in der Regel auf eine maximale Länge von 255 begrenzt (in MySQL, anderen RDBMS-Systeme haben ähnliche Grenzen).
Wenn Sie Rails verwenden Formular-Helfer, ein TextArea- wird ausgegeben für dieses Feld sein (weil es vom Typ ‚Text‘). TextArea- ist das Formular-Element, das Multi-Line-Eingang akzeptiert.
Edit: Wenn Sie bereits die create_table migriert, können Sie eine neue Migration erstellen, um den Spaltentyp zu ändern:
def self.up
change_column :notes, :note, :text
end
Andere Tipps
Das richtige Format sei
t.string :note, :limit => 1000
stellen Sie sicher, eine Version von MySQL verwenden (oder je nachdem, welche Datenbank), die als 256 Zeichen Varchars länger unterstützt.
Wenn Sie einen großen Textblock verwenden möchten wäre es
t.text :note
Sie können die Länge ändern sich mit der Grenze Option als so ...
def self.up
change_column :notes, :note, :string, :limit => 1000
end
Da hatte ich schon viele Daten gespeichert habe ich
self.up
change_column :notes, :note, :text, :limit => nil
end
Wenn ich aufhörte, die:. Grenze => nil Option dann der Spaltentyp würde von varchar ändern, um Text, aber es hatte noch eine maximale Länge von 255 Zeichen