我的搜索区分大小写

时间:2013-04-10 06:06:08

标签: ruby-on-rails search utf-8

我对rails很新,并且正在使用此搜索表单

  <%= form_tag producer_path(@user), method: :get do %>
    <p>
      <%= text_field_tag :search, params[:search] %>
      <%= submit_tag "Search", name: nil %>
    </p>
  <% end %>

并在模型中使用SQL LIKE

  def self.search(search)
    if search
      find(:all, conditions: ['name LIKE ?', "%#{search}%"])
    else
      find(:all)
    end
  end

我希望默认情况下这不区分大小写,但事实并非如此。我正在使用PostgreSQL 9.1。这是我需要为数据库配置的东西,如果是这样的话?

BTW我在URL中看到以下参数包括一个带有不可打印字符的UTF8哈希(在浏览器地址栏中,这里的html似乎显示为一个检查符号),我不知道它来自哪里对于。这个UTF8编码可能是问题的根源吗?

?utf8=✓&search=

2 个答案:

答案 0 :(得分:1)

find(:all, conditions: ['name iLIKE ?', "%#{search}%"])

从postgres文档引用:

  

可以使用关键字ILIKE而不是LIKE来进行匹配   根据活动区域设置不区分大小写。这不在   SQL标准,但是PostgreSQL扩展。

答案 1 :(得分:0)

这是一个类似的主题,

How can I search (case-insensitive) in a column using LIKE wildcard?

这不是真正的铁路解决方案。我建议您尝试使用元搜索 gem来搜索具有复杂功能的内容。