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

问题描述 投票:5回答:2

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

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

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

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

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

sql ruby-on-rails arrays postgresql activerecord
2个回答
6
投票

根据documentation,这样的事情应该有效:

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

2
投票

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

# 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'])
© www.soinside.com 2019 - 2024. All rights reserved.