2013-04-29 55 views
7

如何通过hstore属性订购查询结果?如何通过Rails 4中的hstore属性来排序结果?

@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

如果你想排序在properties hstore的'platform'键的值,那么你想使用->查找'platform'这样的钥匙:

.order("products.properties -> 'platform'") 
相关问题