ActiveRecord 不区分大小写的搜索

如果你需要在 ActiveRecord 模型中搜索类似的值,你可能会想要使用 LIKEILIKE,但这在数据库引擎之间是不可移植的。同样,使用始终下降或升级可能会产生性能问题。

你可以使用 ActiveRecord 的基础 Arel matches 方法以安全的方式执行此操作:

addresses = Address.arel_table
Address.where(addresses[:address].matches("%street%"))

Arel 将为配置的数据库引擎应用适当的 LIKE 或 ILIKE 构造。