当某些东西存储为数组时,Rails where子句

我正在使用PG数据库运行rails 4.2。

我有一个存储在数据库中的项目,如(model Item ):

 :something => ["1", "2", "3"] 

我想得到Item.where(:something.include? => "3")

显然这不起作用 – 但是你打算如何在rails中做到这一点?

根据文档 ,这样的事情应该工作:

 Item.where('something @> ARRAY[?]::varchar[]', ['3']) 

除了@potashin的答案之外,如果你需要在一个元素上获取Items,还有一个更短的方法(参见文档 )。

 # Items for a single something Item.where("'3' = ANY (something)") # Or using '?' Item.where('? = ANY (something)', '3') # Items for multiple something Item.where('something @> ARRAY[?]::varchar[]', ['3', '4'])