[英]Rails + ActiveRecord + Postgres: How to match case insensitive substring?
[英]Postgres case insensitive searching with Rails
我的开发数据库是SQLite,但我将我的应用程序部署到Heroku,他们正在使用PostgreSQL。
现在,如果我执行搜索,有时会出现两个不同的结果,因为PostgreSQL区分大小写,但SQLite不是。
Rails不应该标准化这些东西吗? 我应该用什么方法来解决这个问题?
Postgres中不区分大小写的搜索:
ilike
而不是like
(不区分大小写) ActiveRecord没有处理许多相对常见的事情,LIKE匹配就是其中之一。 以下是使用直线Arel实现此目的的方法。
Model.where(
Model.arel_table[:title].matches("%#{search_term}%")
)
您可以安装Arel-Helpers以使其更容易一些
Model.where(Model[:title].matches("%#{search_term}%"))
我之前为此推荐了Squeel ,但最初的创建者已停止支持它,并且似乎没有全职开发人员维护它。 由于它使用私有ActiveRecord API,因此需要不断进行管理。
处理此问题的另一种DDL
方式是citext
数据类型或不区分大小写的TEXT。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.