2016-01-07 76 views
1

如何查找某个类中hstore密钥不存在或存在时不为零的所有对象?Rails - 查找hstore密钥不存在或=无的所有记录

产品表有:image_urls

t.hstore "image_urls", default: {} 

的hstore这将让其中没有有用的值被设置为image_urls所有产品:

Product.where(image_urls: ['', nil]) 

但是如果我想找到的所有产品产品image_urls[:thumbnail]是零还是不存在?

这不起作用:

Product.where(image_urls[:thumbnail]: ['', nil]) 
+1

我猜测你需要查看PostgreSQL文档:http://www.postgresql.org/docs/9.4/static/hstore.html#HSTORE-OP-TABLE –

+1

谢谢!这导致我找到了解决方案。如果你想在下面发布答案,我会给你信用:'Product.where(“image_urls @>'thumbnail = NULL'”)' – Meltemi

+0

仍然希望找到这两个键缺少OR键= NULL。你可以结合ActiveRecord查询与SQL? – Meltemi

回答

0

我认为你正在寻找以下运算符:

hstore ? key  # does hstore contain key? 
hstore @> hstore # does left hstore contain right? 

所以最终的解决办法是:

Product.where("not image_urls ? 'thumbnail' or not image_urls @> 'thumbnail=>NULL'") 
相关问题