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.

War es hilfreich?

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

Siehe http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters /TableDefinition.html für weitere Informationen

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top