Возможно ли иметь массив hstore в PostgreSQL

Я полный новичок в PostgreSQL. И я был действительно поражен типом данных hstore, предоставляемым Postgres. Что ж, я использую фреймворк Rails 3 и разрабатываю простое приложение, использующее PostgreSQL. Я хочу сохранить массив хэшей в поле. Например:

authors: [
           {
             name: "abc",
             email: "[email protected]"
           },
           {
             name: "xyz",
             email: "[email protected]"
           }
         ]

Возможно ли это в PostgreSQL с использованием Rails 3? Если да, то может кто-нибудь подсказать как?

Спасибо


person swaroopsm    schedule 24.04.2013    source источник


Ответы (2)


Конечно, можно создать столбец массива hstore в Rails 4, например. такая спецификация столбца при создании таблицы:

t.hstore :properties, :array => true

Однако в Rails 4.0 есть ошибка кодирования, которая, к сожалению, делает их непригодными для использования; по сути, вы можете читать из них, и они правильно представлены в виде массивов хэшей, но не записывать.

Я открыл задачу (с исправлением) по адресу https://github.com/rails/rails/issues/11135 который, надеюсь, скоро будет включен.

person inopinatus    schedule 05.07.2013
comment
Спасибо! С нетерпением жду, когда команда rails включит его. - person swaroopsm; 05.07.2013
comment
Спасибо за работу над этим @inopinatus! Есть ли у вас идеи, как передать массив hstore в виде строки, чтобы он корректно попадал в базу данных, пока ваш патч не станет частью Rails? - person ; 15.09.2013
comment
Ваш ответ, кажется, противоречит принятому ответу здесь: stackoverflow.com/questions/22306434/ вы уверены, что это можно сделать? - person Noz; 03.05.2014
comment
@noz, учитывая, что мой патч для этого сейчас находится в производстве, да, я уверен! - person inopinatus; 16.05.2014

Я не уверен, позволят ли они вам иметь массив hstore, но есть несколько расширений активных записей, которые добавляют типы hstore и array. например.:

https://github.com/funny-falcon/activerecord-postgresql-arrays

https://github.com/engageis/activerecord-postgres-hstore

https://github.com/tlconnor/activerecord-postgres-array

Не пропустите также улучшения, связанные с Rails 4:

http://blog.remarkablelabs.com/2012/12/a-love-affair-with-postgresql-rails-4-countdown-to-2013

person Denis de Bernardy    schedule 27.04.2013