Ответ 1
Смотрите этот ответ: Rails 3 Миграция с длинным текстом
Причина, по которой вводимые вами предельные значения игнорируются, объясняется тем, как работает MySQL. Он имеет четыре типа текста, каждый из которых имеет свой собственный размер:
- TINYTEXT - 256 байт
- ТЕКСТ - 65,535 байт.
- MEDIUMTEXT - 16 777 215 байт.
- LONGTEXT - 4 294 967 295 байт.
Текстовый столбец должен быть одним из четырех типов. Вы не можете указать произвольную длину для этих типов в MySQL.
Итак, если вы установите ограничение на столбец типа текста: Rails автоматически выберет наименьший из тех типов, которые могут вместить это значение, молча округляя предельное значение, введенное вами в один из этих четырех пределов выше.
Пример:
t.text :example_text_field, :limit => 20
создаст поле TINYTEXT с пределом в 256 байт, тогда как
t.text :example_text_field, :limit => 16.megabytes - 1
создаст поле MEDIUMTEXT с пределом 16,777,215 байт.
Update
Для дрожания вопроса: "Мне нужно изменить столбец"
change_column :example_table, :example_text_field, :text, limit: 16.megabytes - 1