如何在Rails应用程序中执行不区分大小写的搜索?

时间:2012-03-01 10:09:33

标签: ruby-on-rails search

在Rails 3.2应用程序中,我有一个搜索字段,它在用户模型中使用以下例程。

def self.search(search)
   if search
        where('fullname LIKE ? OR email LIKE ?', "%#{search}%", "%#{search}%")
   else
        scoped
   end
end

这似乎是执行区分大小写的搜索。如何修改它以使其不区分大小写?

非常感谢

2 个答案:

答案 0 :(得分:5)

如果你正在使用Postgres,你可以使用'ilike':

def self.search(search)
  if search
    where('fullname ILIKE ? OR email ILIKE ?', "%#{search}%", "%#{search}%")
  else
    scoped
  end
end

答案 1 :(得分:0)

当我在过去做过这个时,我已经使用了MySQL例程UPPER。像

这样的东西
def self.search(search)
   if search
        where('UPPER(fullname) LIKE ? OR UPPER(email) LIKE ?', upcase(search), upcase(search))
   else
        scoped
   end
end