Как выполнить поиск без учета регистра в приложении Rails? - PullRequest
0 голосов
/ 01 марта 2012

в приложении Rails 3.2 У меня есть поле поиска, которое основано на следующей процедуре в пользовательской модели:

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

Похоже, что поиск выполняется с учетом регистра.Как я могу изменить это, чтобы оно не чувствительно к регистру?

Большое спасибо

Ответы [ 2 ]

5 голосов
/ 01 марта 2012

Если вы используете Postgres, вы можете использовать «ilike»:

def self.search(search)
  if search
    where('fullname ILIKE ? OR email ILIKE ?', "%#{search}%", "%#{search}%")
  else
    scoped
  end
end
0 голосов
/ 01 марта 2012

Когда я делал это в прошлом, я использовал подпрограмму MySQL UPPER. Так что-то вроде

def self.search(search)
   if search
        where('UPPER(fullname) LIKE ? OR UPPER(email) LIKE ?', upcase(search), upcase(search))
   else
        scoped
   end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...