Это создает массив строк, по умолчанию это пустой массив:
t.string :A_options, array: true, default: []
Это создает массив целых чисел, по умолчанию это пустой массив:
t.integer :A_options, array: true, default: []
Это должно бытьa NoMethodError
:
t.array :A_options
В PostgreSQL нет типа «массив», только «массив X», где «X» - это другой тип столбца.Массивы PostgreSQL не являются универсальными контейнерами, такими как массивы Ruby, они больше похожи на массивы в C, C ++, Go, ...
Если вам нужен универсальный контейнер, который больше похож на массив Ruby, то, возможно, вы захотите jsonb
вместо.Массив jsonb
может содержать коллекцию чисел, строк, логических значений, массивов, хэшей, ... одновременно.
Что касается генератора, вы не можете указать default: []
, поскольку вы вообще не можете указать default
:
3.5 Модификаторы столбцов
[...]
null
и default
нельзя указать с помощью командной строки.
Также см. Могу ли я передать значение по умолчанию для рельсов для создания миграции?.