Ruby on Rails ActiveRecord不区分大小写的搜索

示例

如果需要在ActiveRecord模型中搜索相似的值,则可能会想使用LIKE,ILIKE但这在数据库引擎之间是不可移植的。同样,始终采用小写或大写可能会导致性能问题。

您可以使用ActiveRecord的基础Arelmatches方法以安全的方式执行此操作:

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

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