Правильно ли следующее?
change_column :tablename, :fieldname, :limit => null
Строки без ограничений не поддерживаются большинством баз данных: вы должны указать размер в определении varchar (SIZE)
.
Хотя вы можете попробовать, я бы лично выбрал : limit => BIG_ENOUGH_NUMBER
. Вы также можете рассмотреть возможность использования типа CLOB для очень больших текстов.
Чтобы сделать его независимым от db-драйвера, нужно написать что-то вроде этого:
add_column :tablename, :fieldname_tmp, :text
Tablename.reset_column_information
Tablename.update_all("fieldname_tmp = fieldname")
remove_column :tablename, :fieldname
rename_column :tablename, :fieldname_tmp, :fieldname