Вопрос

Я создал новую таблицу, содержащую столбец "примечание".Я полагаю, что по умолчанию используется varchar (255), но я хочу, чтобы этот столбец был текстовой областью.поле и для предоставления большего количества данных.Я предполагаю, что я бы внес это изменение в файл ActiveRecord::Migration, но мне любопытно, какой формат.Могу ли я просто изменить varchar(255) на varchar (1000), например?(если да, то в каком формате?

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

Это правильный формат?Кроме того, как мне сделать так, чтобы поле ввода состояло из нескольких строк?Извините, если это простая штука, но я новичок в программировании и RoR.Спасибо.

Это было полезно?

Решение

Вы можете просто использовать тип "text" вместо "string".

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

Использование типа "текст" приведет к созданию столбца базы данных типа TEXT.Varchar обычно ограничен максимальной длиной 255 (в MySQL другие СУБД имеют аналогичные ограничения).

Если вы используете помощники формы Rails, a текстовое поле будет выведен для этого поля (поскольку оно имеет тип 'text'). текстовое поле является элементом формы, который принимает многострочный ввод.

Редактировать:Если вы уже перенесли create_table, вы можете создать новую миграцию, чтобы изменить тип столбца:

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

Другие советы

Правильным форматом было бы

t.string :note, :limit => 1000

убедитесь, что вы используете версию MySQL (или любой другой базы данных), которая поддерживает переменные длиной более 256 символов.

если вы хотите использовать большой текстовый блок, это будет

t.text :note

Видишь http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html для получения дополнительной информации

Вы можете изменить длину с помощью опции limit следующим образом...

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

Поскольку у меня уже было сохранено много данных, я использовал

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

Если бы я отключил опцию:limit => nil, то тип столбца изменился бы с varchar на text, но его максимальная длина по-прежнему составляла 255 символов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top