rails中不区分大小写的搜索 - 来自Beginning Rails的示例

时间:2010-06-03 22:56:56

标签: ruby-on-rails ruby

有些人可以帮助我将以下搜索转换为不区分大小写吗?

以下是在事件模块中搜索“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)时,我无法得到这个活动。

然而,当我进入“音乐会”,或“曾经”或“证书”......我可以得到它。

有些朋友可以解释这些代码,然后教我如何让它成为一个案例密集型的吗?

感谢。

1 个答案:

答案 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,你需要查看它们的小写函数,但其​​余部分仍然是相同的。