Postgresql не будет сохранять массив пустых массивов - PullRequest
0 голосов
/ 18 марта 2019

Модель user имеет поле goal, представляющее собой массив:

t.integer "goal", default: [], array: true

Допустимая запись для цели - [[],[],[]].Если я сделаю

Match.create(goal: [[],[],[]])

, я получу исключение:

ActiveRecord::StatementInvalid: PG::InvalidTextRepresentation: ERROR:  malformed array literal: "{{},{},{}}"
DETAIL:  Unexpected "}" character.

Я знаю, что могу обойти это, сохранив его как goal: [], но я теряю информацию о количествесуб-массивы.Есть ли способ это исправить?

1 Ответ

1 голос
/ 18 марта 2019

Вы перешли от попытки сохранить массив чисел к массиву фиксированной длины, который содержит нулевые значения или даже вложенные массивы. Поэтому поле t.integer не годится. Вам необходимо использовать поле t.jsonb или t.json.

См. Документы Postgres по типам данных JSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...