ActiveRecord 不区分大小写的搜索
如果你需要在 ActiveRecord 模型中搜索类似的值,你可能会想要使用 LIKE
或 ILIKE
,但这在数据库引擎之间是不可移植的。同样,使用始终下降或升级可能会产生性能问题。
你可以使用 ActiveRecord 的基础 Arel matches
方法以安全的方式执行此操作:
addresses = Address.arel_table
Address.where(addresses[:address].matches("%street%"))
Arel 将为配置的数据库引擎应用适当的 LIKE 或 ILIKE 构造。