繁体   English   中英

如何在Rails 4中通过hstore属性订购结果?

[英]How do I order results by hstore attribute in 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类型。

双引号用于引用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'")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM