Найти значения больше, чем при использовании hstore и rails

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

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

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

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

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


person graphmeter    schedule 08.10.2013    source источник
comment
Я думаю, что оператор, которого вы ищете, это ->. Итак, попробуйте where("(data -> 'year')::int > 2011"). postgresql.org/docs/9.3/static/hstore.html   -  person j03w    schedule 08.10.2013
comment
Использование -› работает отлично! Вы можете добавить его в качестве ответа, если хотите.   -  person graphmeter    schedule 08.10.2013
comment
спасибо j03w, отлично работает.   -  person chourobin    schedule 23.01.2014


Ответы (1)


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

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

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

person charlysisto    schedule 12.02.2016