2013-04-24 2 views
5

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

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

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

Благодаря

+1

Ну, это, безусловно, возможно на стороне PG: http://sqlfiddle.com/#!1/16e4c/3 –

+0

Вы знаете, как реализовать это в Rails. Я полный новичок в рельсах. Спасибо – swaroopsm

ответ

7

Это, конечно, можно создать массив -of-hstore в Rails 4, например колонка спецификации, как это в создании таблицы:

t.hstore :properties, :array => true 

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

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

+0

Спасибо! Ждем команду рельсов, чтобы ее включить. – swaroopsm

+0

Спасибо за работу над этим @inopinatus! Есть ли у вас какие-либо идеи о том, как передать массив hstore в виде строки, чтобы он попадал в базу данных правильно, пока ваш патч не станет частью Rails? – 2013-09-14 21:50:42

+0

Ваш ответ, похоже, противоречит принятому здесь ответу: http://stackoverflow.com/questions/22306434/can-i-store-arrays-in-hstore-with-rails Вы уверены, что это можно сделать? – Noz

2

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

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

Смежные вопросы