2013-10-08 2 views
4

Я храню информацию о продукте, включая год выпуска продукта, используя hstore и postgresql в рельсах. Теперь я хотел бы иметь возможность запрашивать все продукты, выпущенные до или после определенного года. Я могу запросить все записи, содержащие поле года в столбце hstore «данные» с использованием:Найти значения, превышающие использование hstore и rails

Product.where("data ? 'year'") 

Благодаря hstore значение года хранится в виде строки. Поэтому я попытался ввести отливать год до целого, с тем, чтобы найти записи с годами больше чем/меньше, чем X:

Product.where("(data ? 'year')::int > 2011") 

Однако, это не похоже на работу, я всегда получаю пустой массив результаты возвращаются. Что я делаю не так? Есть ли другой способ сделать это?

+4

Я думаю, что ваш оператор ищут '->'. Итак, попробуйте 'where (" (data -> 'year') :: int> 2011 ")'. http://www.postgresql.org/docs/9.3/static/hstore.html – j03w

+0

Использование -> работает отлично! Вы можете добавить его в качестве ответа, если хотите. – graphmeter

+0

спасибо j03w, отлично работает. – chourobin

ответ

1

Я думаю, что оператором, которого вы ищите, является ->.

Итак, попробуйте следующее: where("(data -> 'year')::int > 2011")

(от комментариев jO3w в)

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