Я пытаюсь преобразовать существующий столбец типа varchar в jsonb. Столбец содержит такие строки, как «черный белый оранжевый», и вы хотите преобразовать его в формат jsonb, чтобы он был преобразован в [«черный», «белый», «оранжевый»].
class AlterColorsDatatype < ActiveRecord::Migration[5.0]
def change
change_column :quotes, :colors, :jsonb, default: '[]', using: 'colors::jsonb'
end
end
Я ожидал, что это преобразует тип столбца в jsonb, а часть using: также преобразует существующие данные в jsonb.
Вместо этого я получаю эту ошибку:
ActiveRecord :: StatementInvalid: PG :: InvalidTextRepresentation: ОШИБКА: недопустимый синтаксис ввода для типа json. ДЕТАЛИ: токен «Индиго» недействителен. КОНТЕКСТ: данные JSON, строка 1: Индиго: ALTER TABLE "кавычки" ALTER COLUMN "цвета" ТИП jsonb ИСПОЛЬЗОВАНИЕ цветов :: jsonb
Я пробовал другой синтаксис, но все равно получаю ту же ошибку. Я думаю, мне придется преобразовать весь атрибут столбца по атрибуту во что-то вроде to_json, но я не уверен, как подойти к решению этой ошибки. После многих поисков в Google другие люди с той же ошибкой, похоже, не нашли решения.