J'ai créé un nouveau tableau 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 permettre plus de données. J'imagine que je ferais ce changement dans le fichier ActiveRecord :: Migration mais je suis curieux quant au format. Dois-je simplement changer le varchar (255) en 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? De plus, comment puis-je obtenir le champ de saisie pour être plusieurs lignes. Désolé si ce sont des choses faciles mais je suis nouveau dans la programmation et RoR. Merci.
Vous pouvez simplement utiliser le type "texte" au lieu de "chaîne".
def self.up
create_table :notes do |t|
t.text :note
end
end
L'utilisation du type 'text' entraînera une colonne de base de données de type TEXT. Varchar est généralement limité à une longueur maximale de 255 (dans MySQL, les autres SGBDR ont des limites similaires).
Si vous utilisez les assistants de formulaire de Rails, un zone de texte sera affiché pour ce champ (car il est de type 'texte'). textarea est l'élément de formulaire qui accepte la saisie sur plusieurs lignes.
Modifier: si vous avez déjà migré la table create_table, vous pouvez créer une nouvelle migration pour changer le type de colonne:
def self.up
change_column :notes, :note, :text
end
Le format correct serait
t.string :note, :limit => 1000
assurez-vous que vous utilisez une version de MySQL (ou n'importe quelle base de données) qui prend en charge les 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
Vous pouvez modifier la longueur avec l'option de limite comme si ...
def self.up
change_column :notes, :note, :string, :limit => 1000
end
Comme j'avais déjà beaucoup de données stockées, j'ai utilisé
self.up
change_column :notes, :note, :text, :limit => nil
end
Si je quittais l'option: limit => nil, le type de colonne changerait de varchar en texte, mais il avait toujours une longueur maximale de 255 caractères.