Domanda

Ho creato una nuova tabella che include una colonna "note". Il valore predefinito è varchar (255) credo, ma vorrei avere questa colonna sia un'area di testo contro un campo e per consentire ulteriori dati. Immagino che avrei fatto questo cambiamento nel file di migrazione ActiveRecord :: ma sono curioso di sapere il formato. Ho semplicemente cambiare il varchar (255) a varchar (1000) per esempio? (In caso affermativo qual è il formato?

def self.up
    create_table :notes do |t|
      t.string :note :varchar(1000)
    end

è che il formato giusto? Inoltre, come faccio ad ottenere il campo di immissione per essere più righe. Scusate se questa è roba facile, ma io sono nuovo di programmazione e RoR. Grazie.

È stato utile?

Soluzione

Si può semplicemente utilizzare il 'testo' tipo invece di 'stringa'.

def self.up
  create_table :notes do |t|
    t.text :note
  end
end

Utilizzando il tipo di 'testo' si tradurrà in colonna del database di tipo text. Varchar è generalmente limitata a una lunghezza massima di 255 (in MySQL, altri RDBMS hanno limiti simili).

Se si utilizza Rails' helper delle form, un textarea viene emesso per questo campo (perché è di tipo 'text'). textarea è l'elemento forma che accetta input multi-linea.

Edit: Se hai già migrato il CREATE_TABLE, è possibile creare una nuova migrazione di cambiare il tipo di colonna:

def self.up
  change_column :notes, :note, :text
end

Altri suggerimenti

Il formato corretto sarebbe

t.string :note, :limit => 1000

assicurarsi che si sta utilizzando una versione di MySQL (o qualsiasi database) che supporta VARCHAR più lungo di 256 caratteri.

Se si desidera utilizzare un grande blocco di testo che sarebbe stato

t.text :note

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters /TableDefinition.html per ulteriori informazioni

È possibile modificare la lunghezza con l'opzione limite così ...

def self.up
  change_column :notes, :note, :string, :limit => 1000
end

Da quando ho avuto un sacco di dati già memorizzati ho usato

self.up
  change_column :notes, :note, :text, :limit => nil
end

Se ho lasciato fuori il:. Limite => opzione nil poi il tipo di colonna cambierebbe da varchar al testo, ma aveva ancora una lunghezza massima di 255 caratteri

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top