вопрос миграции varchar для Ruby on Rails
Я создал новую таблицу, включая столбец "Примечание". По умолчанию varchar (255) я считаю, но я хочу, чтобы этот столбец был текстовой областью против поля и позволял больше данных. Я предполагаю, что я бы сделал это изменение в файле ActiveRecord::Migration, но мне любопытно, каков формат. Могу ли я просто изменить varchar(255) на varchar(1000), например? (если да, то в каком формате?
def self.up
create_table :notes do |t|
t.string :note :varchar(1000)
end
Это правильный формат? Кроме того, как получить, чтобы поле ввода было множественным строки. Извините, если это простой материал, но я новичок в программировании и RoR. Спасибо.
4 ответов
вы можете просто использовать тип "text" вместо "string".
def self.up
create_table :notes do |t|
t.text :note
end
end
использование типа "текст" приведет к столбцу базы данных типа TEXT. Varchar обычно ограничен максимальной длиной 255 (в MySQL другие RDBMSs имеют аналогичные ограничения).
Если вы используете помощники формы Rails, a textarea будет выводиться для этого поля (поскольку оно имеет тип "текст"). textarea - элемент формы, который принимает многострочный ввод.
изменить: Если вы уже перенесли create_table, вы можете создать новую миграцию, чтобы изменить тип столбца:
def self.up
change_column :notes, :note, :text
end
правильный формат будет
t.string :note, :limit => 1000
убедитесь, что вы используете версию MySQL(или любую другую базу данных), которая поддерживает varchars длиннее 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 символов.