2014-11-27 3 views
1

Я хочу иметь возможность запрашивать столбец hStore в базе данных PG и возвращать ТОЛЬКО значения, соответствующие определенному ключу.Rails hStore запрос базы данных postgresql activerecord?

Данные выглядит следующим образом: (имейте в виду :data является PostgreSQL hStore)

[ id: 2, data: {"tags"=>"Ruby, Objects", "type"=>"video", "title"=>"RubyTapas: Blocks, Procs, and Lambdas"}, 
    id: 3, data: {"tags"=>"JavaScript, Objects", "type"=>"video", "title"=>"RubyTapas: Blocks, Procs, and Lambdas"} ] 

Я хочу сделать что-то эффект этого:

Model.uniq.pluck(:tags) 

И выход I ожидаются:

Ruby, Objects, JavaScript 

* Я строго пытаюсь реализовать thi s с activerecord и postgresql.

ответ

2

я смог получить свой желаемый результат успешно выполнив:

Model.pluck(:data).map{|j| j['tags'].split(',') }.flatten.uniq 

Я все еще заинтересован в решении, которое не требует, чтобы map над ActiveRecord отношения. Пожалуйста, порекомендуйте.

0

Via Ryan Bates

Вы можете определить класс Eval, который дает доступ к значениям:

Теперь вы можете использовать

t = Thing.find(2) 
t.type  <-"video" 

С срывать возвращает массив поля значения, это должно работать (хотя я его не тестировал).

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