postgresql - Rails where 子句中的多字段比较

标签 postgresql activerecord ruby-on-rails-5

有没有一种更简洁、DRYer 的方法可以使用 Postgres 作为数据库在 Rails 5.0 中编写此代码?

CrmRevenueLineItem.references(:crm_account)
.where("crm_accounts.name ILIKE :qry OR crm_accounts.legal_name ILIKE :qry 
        OR crm_accounts.website ILIKE :qry", qry: wildcard_query)

我觉得我在里面重复了很多次。在我了解命名参数(:qry)并使用 ? 作为占位符之前,情况更糟。

最佳答案

使用 concat_ws 的变体稍微短一点功能

CrmRevenueLineItem.references(:crm_account)
.where("CONCAT_WS(' ', crm_accounts.name, crm_accounts.legal_name, crm_accounts.website) ILIKE :qry", qry: wildcard_query)

关于postgresql - Rails where 子句中的多字段比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57965295/

相关文章:

ruby-on-rails - ActiveRecord 在迁移文件中添加评级范围

devise - 使用 Rails 5 API 修复 Devise 的 alias_method_chain 问题?

ruby-on-rails - 如何使用新方法扩展 ActiveRecord 关系?

ruby-on-rails - Spree 不能有商品价格 >= 100 万,我应该编辑现有的事件记录迁移吗??

sql - PostgreSQL 中的计算/计算/虚拟/派生列

postgresql - 为什么 postgres 比 LMDB 更快?

ruby-on-rails-5 - Rails5,如何重试执行 ActiveJob 特定次数(最大尝试次数)

ruby-on-rails - 如何在 Ruby on Rails 中查找时区中两个日期之间的剩余时间?

java - 从 IntelliJ 使用 Hibernate 连接到 PostgreSQL 服务器

Postgresql - PSQL 编码问题