2013-04-29 2 views
7

Как я могу заказать результаты запроса с помощью атрибута hstore?Как упорядочить результаты с помощью атрибута hstore в Rails 4?

@items = Item.includes(:product).order('products.properties @> hstore("platform")') 

Причины

PG::Error: ERROR: column "platform" does not exist 
LINE 1: ...oduct_id" ORDER BY products.properties @> hstore("platform"... 

platform является одним из ключевых hstore, хранится в столбце свойств, который является типом hstore.

ответ

17

Двойные кавычки используются для цитирования идентификаторов (таких как имена таблиц и столбцов) в PostgreSQL (и других баз данных, которые следуют стандарту). Так что, когда вы говорите:

hstore("platform") 

PostgreSQL видит "platform" в кавычках имени столбца и так как нет platform колонок, вы получите сообщение об ошибке.

не

Строки в стандартном SQL приведены в одинарные кавычки, вы хотите сказать:

.order("products.properties @> hstore('platform')") 

Это, вероятно, по-прежнему не менее, hstore('platform') не имеет особого смысла, и ни делает, используя @> здесь; a @> b означает

делает hstore a содержат hstore b

Если вы пытаетесь разобраться в значении 'platform' ключа в properties hstore, то вы хотели бы использовать -> для поиска 'platform' таких как:

.order("products.properties -> 'platform'") 
Смежные вопросы