【发布时间】:2016-09-17 20:01:12
【问题描述】:
我是 ROR 新手,正在尝试使用 Active Record 在 PostgreSQL 数据库中实现搜索。我发现要使搜索不区分大小写,我可以使用ILIKE 运算符而不是equals 和LIKE,但不知道当我需要使用IN 运算符时该怎么做。
我得到了一个字段名称和一组值,我需要检查它们,区分大小写的搜索是这样的:
records = records.where(filter['fieldName'] => filter['value'])
其中filter['value'] 是一个数组。
有没有办法更新该行以使其不区分大小写?
如果不是,那么我相信唯一的方法是遍历该数组并将IN 拆分为许多OR 操作,并对该数组中的每个值使用ILIKE(但是我不确定如何使用或使用 Active Record)?
谢谢!
【问题讨论】:
-
“过滤器”哈希来自哪里。看起来 SQLI 对我来说很容易。您可以将已经小写的值存储在数据库中吗?你能添加额外的索引吗?
-
@pascalbetz 过滤器是我通过 REST 从另一个应用程序发送的自定义结构的一部分。不幸的是,我需要在数据库中保留真实案例,但我几乎通过以下建议修复了它。
标签: ruby-on-rails ruby postgresql rails-activerecord