2013-04-29 58 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'") 
相關問題