Будет ли тип данных массива в приложении Rails 4 и Postgres поддерживать порядок элементов в массиве?

#ruby-on-rails #postgresql #ruby-on-rails-4

#ruby-on-rails #postgresql #ruby-on-rails-4

Вопрос:

Мне любопытно использовать тип данных :array в приложении Rails 4 с использованием базы данных Postgresql. Будет ли сохранен порядок добавления элементов в массив? Мой вариант использования следующий: Я хочу разрешить добавлять трех человек в качестве :collaborators к Search модели. Когда я возвращаю участников определенного поиска, я хочу всегда перечислять участников в том порядке, в котором они присоединились к поиску. Подходит ли для этого :array тип данных или мне следует рассмотреть возможность использования :hstore вместо этого?

Комментарии:

1. PostgreSQL имеет встроенную поддержку для столбцов массива , поэтому array: true материал в вашей миграции представляет собой реальный массив вплоть до конца, а не какой-то странный клад вроде serialize . И вам, как правило, следует предпочесть jsonb столбцы hstore более гибким и, вероятно, лучшей постоянной поддержке. Но да, объединенная таблица с position столбцом, соответствующими ограничениями уникальности и FKS, как правило, лучше.

2. Кроме того, PostgreSQL не разрешает (пока) foreign keys в массивах.

Ответ №1:

Тип данных массива сохраняет порядок, в то время как hstore, похоже, этого не гарантирует.

Но также, возможно, подумайте о добавлении надлежащего отношения collaborators, если вы хотите связать с другой таблицей.

Комментарии:

1. Да, я думаю, что таблица объединения — это правильный путь. Спасибо за ответ @art-solopov