对数组中存储的数据进行搜索(运算符不存在:整数[] = 整数)

2023-12-30

我有一个名为 InfoData 的 Rails 模型,它有一个名为 error_codes 的属性。代码存储在数组中,如 [9,7,10,21] (integer[]) 。

回顾一下

InfoData.first.error_codes 
=> [9,7,5]

我尝试对其使用 ransack 来搜索是否存在特定代码(通过选择选项)。对于 error_codes_in (_in ransack predicate) 我收到以下错误

operator does not exist: integer[] = integer
LINE 1: ...ranch_id" WHERE "info_data"."error_codes" IN (9) A...
                                                         ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

应该如何修复呢?


我认为最简单的方法是向模型添加一个范围并告诉 Ransack 它可以使用该范围。你的模型中有这样的东西:

class InfoData < ApplicationRecord
  def self.error_codes_has(code)
    # Or use `scope` to define this class method if you prefer
    # doing it that way.
    where(':code = any(info_datas.error_codes)', code: code)
  end

  def self.ransackable_scopes(auth = nil)
    %i[error_codes_has]
  end
end

然后在搜索表单中使用该范围:

<%= search_form_for @q do |f| %>
  ...
  <%= f.label :error_codes_has %>
  <%= f.search_field :error_codes_has %>
  ...
<% end %>

或者,你可以编写你自己的掠夺者 https://github.com/activerecord-hackery/ransack/wiki/Using-Ransackers理解 PostgreSQL 数组。除非您做很多这样的事情,否则这可能比您需要的工作量和复杂性更多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对数组中存储的数据进行搜索(运算符不存在:整数[] = 整数) 的相关文章

随机推荐

  • gradle错误找不到方法dependencyManagement()

    下面是我的 build gradle buildscript ext springBootVersion 2 0 0 M3 dependencies classpath org springframework boot spring boo
  • 运行 Ansible playbook 时出现 UNREACHABLE 错误

    我确实可以通过 ssh 访问目标计算机 并且它可以工作 但是每当我运行此剧本时 我都会收到以下错误输出 sudo ansible playbook ansible playbook test yml PLAY openstack TASK
  • 如何在 vue bootstrap 中启用悬停下拉菜单?

    div div
  • 事件处理程序为空

    我正在尝试从用户控件引发单击事件并在包含页面上处理它 我遇到的问题是 当我单击用户控件上的按钮 imgstep1 时 imgstep1 click 事件后面的代码会触发 但 btnHandler 事件始终为空 因此它不会调用父事件 对此的任
  • C# 与 C++ 等效的空合并运算符

    C 空合并运算符是否有 C 等效项 我在代码中做了太多空检查 因此正在寻找一种减少空代码量的方法 我刚刚发现这个 这 运算符又名空合并运算符 http dev tricks net the operator aka null coalesc
  • 如果 C 有指针,为什么还需要数组?

    如果我们可以使用指针malloc创建和使用数组 为什么C中存在数组类型 如果我们可以使用指针来代替 那不是没有必要了吗 数组比动态内存分配更快 数组在 编译时 分配 而 malloc 在运行时分配 分配需要时间 另外 C 并没有强制要求ma
  • Java 8方法引用:提供能够提供参数化结果的Supplier

    我想用 java util Optional orElseThrow 具有要求构造函数参数的异常类型 像这样的事情 orElseThrow MyException new someArgument obviously NOT working
  • 从 C 文本文件中读取 int 值

    我有一个包含以下三行的文本文件 12 5 6 4 2 7 9 我可以使用fscanf函数读取前 3 个值并将它们存储在 3 个变量中 但我无法阅读其余部分 我尝试使用fseek函数 但它仅适用于二进制文件 请帮助我将所有值存储在整数变量中
  • 在 C# 中使用“dynamic”关键字无法编译

    我正在尝试编译一段 C 代码 其中包含dynamic关键词 我需要这个关键字来使用ironpython 但是 它无法编译 抱怨 error CS1980 Dynamic keyword requires System Runtime Com
  • 什么是 Nak 限制?

    我试图了解 Android Open Accessory API 如何与 Arduino ADK 板配合使用 我已经能够发送和接收信息 但我只想知道一切是如何工作的 我得到了这个函数的描述 int AndroidAccessory read
  • 错误测试应用内结算示例 - Dungeons

    我正在尝试获取应用程序内计费示例地下城 我有一个带有我的公共 ID 的草稿应用程序 并且我已经发布了非托管项目 potion 001 我在设备上使用与注册商家帐户相同的谷歌帐户 静态测试效果很好 但是当我尝试购买药水时 我得到 DEBUG
  • VBA中的数字上下控制

    vba 中是否有内置的数字 updown 控件 或者我们是否需要创建一个类似的控件 如果有这样的控件那么我们可以使用哪些事件 请建议 您可以使用SpinButton1对此进行控制 SNAPSHOT CODE 您可以设置最小值和最大值Spin
  • 从列表更新选项菜单

    我的 GUI 中有一个 OptionMenu 它由一个列表填充 每次用户运行某个进程时 列表都会更新以反映这一点 有没有办法根据列表更新选项菜单 我试过了self plotWindow update as per 这个问题 https st
  • 如何将现有数据保留在 couchbase 中并且仅更新新数据而不覆盖

    因此 假设我在存储桶下创建了一些记录 文档 并且用户仅更新 RDBMS 中 10 列中的一列 因此我尝试仅发送该一列数据并在 couchbase 中更新它 但问题是 couchbase 会覆盖整个记录并为其余列设置 NULL 一种方法是从
  • 单击 JfreeChart 折线图按钮上的放大和缩小功能?

    基本上我希望线图被放大和缩小 总共4个按钮 2个用于X轴 放大和缩小 另外两个用于Y轴 沿着任何轴单击按钮 就像绘制图形一样在负 x 轴和负 Y 轴区域 根据数据点 然后单击按钮 图形应根据按钮单击沿负 x 轴或负 Y 轴放大和缩小 我怎样
  • 强制应用程序在特定的 .NET 运行时版本下运行?

    我安装了 NET 2 0 运行时 然后安装了 NET 4 0 运行时 所以我两者都有 当我运行 NET 应用程序时 有没有办法强制使用哪个运行时 编辑 澄清 我的意思是不考虑应用程序的构建方式 我假设 NET 4 0 运行时可以运行 5 年
  • OpenSSL::SSL::SSLError: SSL_connect SYSCALL 返回=5 errno=0 状态=SSLv3 读取服务器问候 A

    下面的代码产生以下错误 OpenSSL SSL SSLError SSL connect SYSCALL returned 5 errno 0 state SSLv3 read server hello A require net http
  • 获取 Bash 数组中值的索引

    我有东西在bash like myArray red orange green 我想做一些类似的事情 echo myArray green 在这种情况下会输出2 这是可以实现的吗 这将做到这一点 bin bash my array red
  • C# 7 本地函数:是否允许属性/方面?

    C 7 引入了本地函数 这太棒了 假设我有以下代码 using System using PostSharp Aspects namespace AspectCS7 class Program private static void Mai
  • 对数组中存储的数据进行搜索(运算符不存在:整数[] = 整数)

    我有一个名为 InfoData 的 Rails 模型 它有一个名为 error codes 的属性 代码存储在数组中 如 9 7 10 21 integer 回顾一下 InfoData first error codes gt 9 7 5