gpt4 book ai didi

ruby-on-rails - 在 PostgreSQL 的 HSTORE 中查找键值对

转载 作者:行者123 更新时间:2023-11-29 13:53:02 24 4
gpt4 key购买 nike

给定一个表 games 和列 identifiers,其类型为 HSTORE:

| id | name             | identifiers                        |
|----|------------------|------------------------------------|
| 1 | Metal Gear | { sku: 109127072, ean: 512312342 } |
| 2 | Theme Hospital | { sku: 399348341 } |
| 3 | Final Fantasy | { ean: 109127072, upc: 999284928 } |
| 4 | Age of Mythology | { tbp: 'a998fa31'} |
| 5 | Starcraft II | { sku: 892937742, upc: 002399488 } |

如何查找给定的一组键值对是否在数据库中至少有一个匹配项?

例如,如果我提供这个数组:[ {sku: 109127072 }, { upc: 999284928 } ],我应该看到:

| id | name           | identifiers                        |
|----|----------------|------------------------------------|
| 1 | Metal Gear | { sku: 109127072, ean: 512312342 } |
| 3 | Final Fantasy | { ean: 109127072, upc: 999284928 } |

最佳答案

对于 Rails 5,您认为应该尝试使用 运算符,例如:

h = { sku: 109127072, upc: 999284928 }
rela = Person.where("identifiers -> ? = ?", h.keys.first, h[h.keys.first])
h.keys[1..-1].reduce(rela) {|rela, key| rela.or("identifiers -> ? = ?", key, h[key]) }
# => relation with ored-arguments

对于非第 5 条 rails ,您应使用描述的 arel here .

关于ruby-on-rails - 在 PostgreSQL 的 HSTORE 中查找键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37392330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com