Ransack、Postgres - 对关联表中具有不同的列进行排序:true

2023-11-24

我有一个使用 Ransack gem 的应用程序,我正在将其从 Mysql 转换为 Postgres。

在排序列来自关联表并且 unique 选项设置为 true 的情况下,Postgres 会抛出以下错误:

PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list

Ransack github 页面表示,在这种情况下,“你只能靠自己了”。

什么是最好的 - 任何一个! - 处理这种情况的策略?

q = Contact.includes(:contact_type).search
q.sorts = ['contact_type_name asc']
q.result(distinct: true)
PG::InvalidColumnReference: ERROR:  for SELECT DISTINCT, ORDER BY expressions must appear in select list

Thanks!


有一个更简单的方法可以解决这个问题。使用 ActiveRecord 连接查询或选择查询来添加所需的列,例如:

q = Contact.search
q.sorts = ['contact_type_name asc']
q.result(distinct: true).
  includes(:contact_type).
  joins(:contact_type)

或者,如果您只想选择几列,您可以这样做:

q = Contact.search
q.sorts = ['contact_type_name asc']
q.result(distinct: true).
  select('contacts.*, contact_type.name')

我做了一个拉取请求更新 Ransack 的自述文件。

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

Ransack、Postgres - 对关联表中具有不同的列进行排序:true 的相关文章

随机推荐

  • 在 docker 的构建阶段使用 github 私有仓库部署密钥进行 npm 安装

    我的用例是 我有多个使用相同中间件的 Express 微服务 我想为每个中间件以 npm 模块的格式创建不同的存储库 每个存储库都是私有存储库 并且可以附加部署密钥 可以是不同的密钥或相同的密钥 所有这些在本地都可以正常工作 但是 当我尝试
  • Typo3 V6:如何创建内容元素容器? (不带电视)

    对于一个项目 我使用 Typo3 v6 0 我正在寻找创建嵌套内容元素或内容元素容器 我希望能够创建内联两列布局 而不需要使用特定的模板 我想做这个without使用Templavoila 我尝试过的扩展是gridelements kb n
  • 如何在 Win32 桌面应用程序中使用自定义 WinRT 库?

    我的基于 Win32 的桌面应用程序中有一个 WinRT 类 C CX 引用类 它访问 WinRT API 并且工作得很好 我用了本指南让它发挥作用 现在我试图将此类放入桌面应用程序可以使用的库中 我在这方面遇到了一些麻烦 这是我在 Vis
  • 如何使用 ctypes.util.find_library 在 AWS lambda (python) 中导入 .so 库?

    我正在尝试什么 我在 Lambda 上使用的 python 包 OCRMYPDF 需要 leptonica 库libpt so 5 在隔离导入代码时 我发现问题在于find library lept 打印结果返回 None from cty
  • 将13位unixtime(以ms为单位)转换为python中的时间戳

    我想将以毫秒为单位的 13 位 Unix 时间转换为时间戳 1523126888080 gt gt Y m d H M S 我已经尝试过以下代码link 但我认为这是 10 位 Unix 时间 而我有 13 位 Unix 时间 所以 这段代
  • R:按值排除子集的 Data.table

    Using data table in R 我正在尝试对子集进行操作排除选定的元素 我正在使用by运算符 但我不知道这是否是正确的方法 这是一个例子 例如 的价值Delta in IAH SNA是 3 3 2 的平均值Stops in IA
  • 从 IntPtr(16 位)数组复制到托管 ushort

    我有一个IntPtr称为rawbits 它指向一个10MB的数据数组 16位值 我需要返回一个托管的ushort数组由此而来 下面的代码可以工作 但有一个额外的BlockCopy我想摆脱 Marshal Copy不支持ushort 我能做些
  • 使用矩阵中的行索引和列索引从矩阵中提取值

    我有一个矩阵 A 看起来像 A matrix 1 9 3 3 A 1 2 3 1 1 4 7 2 2 5 8 3 3 6 9 以及我感兴趣的元素索引矩阵 第 1 列包含行索引 第 2 列包含列索引 v matrix c 1 3 2 2 2
  • 如何在java程序中使用mkdir和rmdir命令

    我想使用系统命令 例如mkdir and rmdir运行java程序时 我怎样才能做到这一点 为什么要使用命令行 仅供参考 有内置的独立于平台的File类 http www exampledepot com egs java io dele
  • 以固定速率安排 Callable

    我有一个任务想要以固定速率运行 但是我还需要每次执行后任务的结果 这是我尝试过的 The task class ScheduledWork implements Callable
  • RoutedCommands 已执行和预览执行事件

    我的问题是我想在多个地方处理命令 例如 我有自定义用户控件 其中按钮绑定到某个命令 我在该控件中有一个命令绑定 但在使用该控件的窗口中也有一个命令绑定 我的目标是在控件内执行某些操作 同时不中断窗口中命令的处理 我尝试尝试执行和预览执行事件
  • 将列表元素向右移动并将列表元素从末尾移动到开头

    我想旋转列表中的元素 例如 将列表元素向右移动 a b c d 会成为 d a b c or 1 2 3 变成 3 1 2 我尝试了以下方法 但它不起作用 def shift aList n len aList for i in range
  • cpu使用率最高的进程名称

    我有一个Samurize配置显示类似于任务管理器的 CPU 使用率图表 如何同时显示当前CPU使用率最高的进程名称 我希望最多每秒更新一次 Samurize 可以调用命令行工具并将其输出显示在屏幕上 因此这也可以是一个选项 进一步澄清 我已
  • 仅在粘贴时限制输入数字

    我有一个名为restrict numbers 的类 我想将输入的字符限制为仅接受数字 我使用了以下代码 这很好 但问题是我想在输入中粘贴时进行相同的限制在不完全禁用粘贴的情况下提交 function input only numbers i
  • git status 返回“致命:不是 git 存储库”但 .git 目录存在

    我有一个当前无法推送到的远程文件夹 当我直接进入远程目录并执行 git status 时 它会显示 致命 不是 git 存储库 git 文件夹确实存在 并且昨天工作正常 此后没有任何变化 谁能告诉我即使 git 文件夹存在也可能收到此消息的
  • 如何从 Java 与 ADFS 通信? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我们有一个在 Caucho Resin 上运行的网站 它主要是使用 JSP 用 Ja va 编写的 我们在网站上有自己的自定义身份验证 我们没有使用任何第三方身份验证框架 我们现
  • PHP 反射类。如何获取属性的值?

    我在 PHP 中使用反射类 但我不知道如何获取反射实例中的属性值 有可能的 代码 如何获取 foreach 循环内的属性值 此致 怎么样 ReflectionProperty getValue 获取属
  • VS Code:登录错误:您似乎处于离线状态。请检查您的网络连接

    在 VS Code 中 当我尝试运行以下命令进行登录时 我收到以下错误消息并且无法登录 由于在公司代理后面工作 我遇到了同样的问题 我可以通过在设置中写入http代理来解决这个问题 而不是将其留空并从环境变量继承
  • JQuery 数据表在输入中搜索并选择

    将 Jquery Datatables 与输入和选择一起使用 如下所示 http datatables net examples api form html或者 如果我使用自定义列呈现处理程序来生成输入并选择如何使全局表搜索工作 如果您查看
  • Ransack、Postgres - 对关联表中具有不同的列进行排序:true

    我有一个使用 Ransack gem 的应用程序 我正在将其从 Mysql 转换为 Postgres 在排序列来自关联表并且 unique 选项设置为 true 的情况下 Postgres 会抛出以下错误 PG InvalidColumnR