2013-07-15 49 views
2

我有一個模型任務沒有特定的鍵返回的記錄 - Rails4 HStore PostgreSQL的查詢

t.string "name" 
t.hstore "actions" 

例子:

#<Task id: 1, name: "first", actions: {"today"=>"9"}, 
#<Task id: 2, name: "second", actions: {"yesterday"=>"1"}, 
#<Task id: 3, name: "third", actions: nil, 
#<Task id: 4, name: "four", actions: {"today"=>"11"}, 

我需要找到所有記錄行動:無,:今天< 10和關鍵:今天不存在。 這是1,2,3任務。

Task.where("actions -> 'today' < '10'") - it return only first task. 
Task.where("actions -> 'today' < '10' OR actions IS NULL") - it return 1 and 3 records. 

我如何找到所有沒有鑰匙的記錄:今天在行動中?

+0

你的意思是你想的任務2,3的回報,而不是1,2,3任務?我今天看到的是出現在任務1中。 – vee

+0

我需要返回1,2,3任務。 – user2232650

+0

你的行爲中是否存在任何事物,比如'前天'?有什麼可能性,只是「今天」和「昨天」還是更多? – vee

回答

8

here,根據你的問題:

Task.where("actions IS NULL OR EXIST(actions, 'today') = FALSE") 

,並根據您的意見:

Task.where("actions -> 'today' < '10' OR actions IS NULL OR EXIST(actions, 'today') = FALSE") 
+0

明智的答案就是要求的。 TY! – Abs