我的开发数据库是SQLite,但我将我的应用程序部署到Heroku,他们正在使用PostgreSQL。
现在,如果我执行搜索,有时会出现两个不同的结果,因为PostgreSQL区分大小写,但SQLite不是。
Rails不应该标准化这些东西吗?我应该用什么方法来解决这个问题?
答案 0 :(得分:41)
Postgres中不区分大小写的搜索:
ilike
代替like
(不区分大小写)答案 1 :(得分:4)
处理此问题的另一种DDL
方式是citext
数据类型或不区分大小写的TEXT。
答案 2 :(得分:4)
ActiveRecord没有处理许多相对常见的事情,LIKE匹配就是其中之一。以下是使用直线Arel实现此目的的方法。
Model.where(
Model.arel_table[:title].matches("%#{search_term}%")
)
您可以安装Arel-Helpers以使其更容易
Model.where(Model[:title].matches("%#{search_term}%"))
我之前为此推荐了Squeel,但原始创作者已经停止支持它,并且似乎没有全职开发者维护它。由于它使用私有ActiveRecord API,因此需要不断进行管理。