выберите одно свойство в поле hstore с помощью Rails 4.1

Я использую Postgres 9.3 с Rails 4.1.

Предположим, у меня есть таблица с столбцом properties hstore.

Теперь я хочу выбрать один ключ внутри столбца hstore в области (или где-то еще..)

Что пробовал: Model.select("properties -> 'category'")

Что происходит: Rails дает мне такой массив:

[#<Model id: nil>,
 #<Model id: nil>,
 #<Model id: nil>,
 #<Model id: nil>]

Что я хочу:

[#<Model id: nil, category: 'foo'>,
 #<Model id: nil, category: 'bar'>,
 #<Model id: nil, category: 'baz'>,
 #<Model id: nil, category: 'foo'>]

person ubergesundheit    schedule 19.06.2014    source источник
comment
Model.where("properties ? 'category'") работает?   -  person Michael Kohl    schedule 19.06.2014
comment
Это не выполняет то, что я хочу сделать ..   -  person ubergesundheit    schedule 19.06.2014


Ответы (1)


Пытаться:

=>  Model.where("properties @> hstore(?, ?)", 'key', 'value').select(:category)
=> [#<Model id: nil, category: 'foo'>]
person Зелёный    schedule 19.06.2014
comment
Хотя это может ответить на вопрос, объяснение того, что делает код и почему это лучшее решение для OP, значительно улучшит этот ответ и поможет будущим посетителям. - person MattDMo; 19.06.2014