Pregunta

He creado una nueva tabla que incluye una columna "nota".El valor predeterminado es varchar(255), creo, pero deseo que esta columna sea un área de texto vs.un campo y permitir más datos.Me imagino que haría este cambio en el archivo ActiveRecord::Migration pero tengo curiosidad sobre el formato.¿Simplemente cambio varchar(255) a varchar(1000), por ejemplo?(si es así ¿cuál es el formato?

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

¿Es ese el formato correcto?Además, ¿cómo consigo que el campo de entrada tenga varias filas?Lo siento si esto es fácil, pero soy nuevo en programación y RoR.Gracias.

¿Fue útil?

Solución

Usted puede simplemente utilizar el tipo de 'texto' en lugar de 'cadena'.

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

Uso del tipo 'texto' resultará en la columna de la base de datos de Tipo de texto. Varchar se limita generalmente a una longitud máxima de 255 (en MySQL, otros RDBMS tienen límites similares).

Si utiliza Rieles helpers de formularios, un área de texto se emitirá durante este campo (porque es de tipo 'texto'). área de texto es el elemento de forma que acepte la entrada multi-línea.

Editar: Si ya ha realizado la migración del create_table, puede crear una nueva migración para cambiar el tipo de columna:

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

Otros consejos

El formato correcto sería

t.string :note, :limit => 1000

asegurarse de que está utilizando una versión de MySQL (o cualquier base de datos) que soporta varchars más de 256 caracteres.

Si desea utilizar un bloque grande de texto sería

t.text :note

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters /TableDefinition.html para más información

Puede cambiar la longitud con la opción límite así que ...

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

Como ya tenía muchos datos almacenados, utilicé

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

Si dejé de lado la opción :limit => nil, entonces el tipo de columna cambiaría de varchar a texto, pero aún tenía una longitud máxima de 255 caracteres.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top