Question

J'ai créé une nouvelle table comprenant une colonne « note ». La valeur par défaut est varchar (255) Je crois, mais je souhaite que cette colonne soit une zone de texte par rapport à un champ et pour permettre plus de données. Je suppose que je fais ce changement dans le fichier de migration de ActiveRecord mais je suis curieux de format. Est-ce que je change simplement le 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 que le format? De plus, comment puis-je obtenir le champ d'entrée pour être plusieurs lignes. Désolé si c'est une chose facile, mais je suis nouveau à la programmation et RoR. Merci.

Était-ce utile?

La solution

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

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

L'utilisation du type « texte » se traduira par la colonne de base de données de type TEXT. Varchar est généralement limité à une longueur maximale de 255 (dans MySQL, d'autres SGBDR ont des limites similaires).

Si vous utilisez Rails de les aides de forme, textarea sera sortie pour ce champ (car il est de type « texte »). textarea est l'élément de forme qui accepte une entrée multi-ligne.

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

Autres conseils

Le format correct serait

t.string :note, :limit => 1000

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

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

t.text :note

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

Vous pouvez modifier la longueur avec l'option limite comme si ...

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

Depuis que j'avais beaucoup de données déjà stockées je

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

Si je l'ai laissé le:. Limit => option zéro alors le type de colonne passerait de varchar au texte, mais il avait encore une longueur maximale de 255 caractères

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top