有些人可以帮助我将以下搜索转换为不区分大小写吗?
以下是在事件模块中搜索“title”字段的代码:
# Add each field to the conditions array
searchable_fields.each_pair do |field, value|
conditions << "#{field} LIKE ?"
values << "%#{value}%"
end
以下是我输入的数据:
Concert
■Posted by: bancova
■2010-03-14
■boston
test
“音乐会”是本次活动的标题。
现在,当我进入“音乐会”(小c)时,我无法得到这个活动。
然而,当我进入“音乐会”,或“曾经”或“证书”......我可以得到它。
有些朋友可以解释这些代码,然后教我如何让它成为一个案例密集型的吗?
感谢。
答案 0 :(得分:0)
我不熟悉您正在使用的教程,但它看起来像是一个数据库问题,而不是Ruby / Rails问题。问题是您的数据库区分大小写,因此'Concert'匹配,因为这就是数据库中的内容,但'Concert'没有,因为它与'Concert'不匹配。
无论如何,实际的解决方案将取决于您的数据库及其配置方式,但假设它是MySQL,那么您的解决方案将是这样的
searchable_fields.each_pair do |field, value|
conditions << "#{field} LIKE LOWER(?)"
values << "%#{value.downcase}%"
end
value.downcase会将输入字符串更改为全部小写,LOWER sql函数将在数据库端执行相同操作。他们现在应该匹配。如果你使用的是SqlLite或Postgres,你需要查看它们的小写函数,但其余部分仍然是相同的。