尝试允许通用数组或值查询,如 rails 用于允许 where(a: [1]) 或 where(a: 1) 工作等等

Posted

技术标签:

【中文标题】尝试允许通用数组或值查询,如 rails 用于允许 where(a: [1]) 或 where(a: 1) 工作等等【英文标题】:Trying to allow for generalized array or value queries like rails uses to allow for where(a: [1]) or where(a: 1) to work and more 【发布时间】:2022-01-18 07:19:51 【问题描述】:

所以我正在搜索的数据类似于(数百个具有各种值组合的数据):

attributes1:
  attr1: "1",
  attr2: "3",
  attr3: ["A,"B"],


attributes2:
  attr1: "2",
  attr2: "5",
  attr3: ["B,"D"],

attributes3:
  attr1: "2",
  attr2: "4",
  attr3: ["B,"D"],

我遇到了这个:

Check whether array in JSONB column includes any of the values in another array

接近但不完全存在(不工作,不清楚原因)。

虽然有点复杂,但查询是预定义的,用于填充下拉菜单,例如 attr3: "A", attr2: "4" attr1: ["1", "2"] 。基本上很笼统。

我让它更容易处理 attr1: "2" 产生attributes2attributes3(或attr1: '2", attr2: "4" 只给出attributes3,但同时尝试将数组作为属性值和查询值处理)现在。

【问题讨论】:

【参考方案1】:

在使用attrX: 中的每个值之前,您可以使用Array() 进行转换。

# Will wrap in an Array
Array("1") => ["1"]

# Will return the original Array
Array(["1"]) => ["1"]

任何使用那一天的方法都可以写成总是期望一个数组。

【讨论】:

以上是关于尝试允许通用数组或值查询,如 rails 用于允许 where(a: [1]) 或 where(a: 1) 工作等等的主要内容,如果未能解决你的问题,请参考以下文章

rails - 设计强参数总是不允许注册

在 Rails 4 中实现通用搜索

Rails 强参数 - 允许在数组中进行深度嵌套哈希

允许用户将我的内容嵌入他们的网站(如博客)——rails 4

如何允许具有强参数的数组

允许管理员激活或停用用户——Rails