36 votes

varchar Question sur la migration pour Ruby on Rails

J'ai créé une nouvelle table, y compris une colonne "remarque". La valeur par défaut est de type varchar(255) je crois, mais je souhaite que cette colonne soit une zone de texte par rapport à un domaine et permettre à plus de données. J'imagine que je voudrais faire ce changement dans ActiveRecord::Migration de fichier, mais je suis curieux de savoir le format. Dois-je simplement changer le type varchar(255) varchar(1000) par exemple? (si oui quel est le format?

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

Est-ce le bon format? En outre, comment puis-je obtenir le champ de saisie à plusieurs lignes. Désolé si c'est chose facile, mais je suis nouveau dans la programmation et RoR. Merci.

78voto

The Who Points 3724

Le bon format serait

 t.string :note, :limit => 1000 

assurez-vous que vous utilisez une version de MySQL (ou de la base de données) qui prend en charge varchars de plus de 256 caractères.

si vous voulez utiliser un gros bloc de texte, ce serait

 t.text :note 

Voir http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html pour plus d'informations.

28voto

Ben Points 5341

Vous pouvez changer la longueur avec l'option limit comme si ...

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

22voto

Siddhartha Reddy Points 3555

Vous pouvez simplement utiliser le "texte" type "au lieu de "string".

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

En utilisant le "texte" type de résultat dans la colonne de base de données de type TEXTE. Varchar est généralement limitée à une longueur maximale de 255 (MySQL, d'autres Sgbdr ont les mêmes limites).

Si vous utilisez de Rails pour former les accompagnateurs, un textarea seront de sortie pour ce domaine (car il est de type 'texte'). textarea est l'élément de formulaire qui accepte multi-ligne d'entrée.

Edit: Si vous avez déjà migré le create_table, vous pouvez créer une nouvelle migration pour changer le type de colonne:

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

7voto

roberocity Points 740

Comme j'avais beaucoup de données déjà stockées, j'ai utilisé

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

Si je laissais l'option: limit => nil, le type de colonne passerait de varchar à text, mais sa longueur maximale serait de 255 caractères.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X