Поиск в нескольких столбцах БД в Rails 3.0 - PullRequest
1 голос
/ 24 марта 2011

Я пытаюсь написать заявление, которое ищет столбцы 2 дБ и возвращает результаты.Можно ли сделать это легко без использования такого драгоценного камня, как Searchlogic?

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

До сих пор у меня есть утверждение, которое выполняет поиск по полю города в моей базе данных.Тем не менее, я хотел бы включить функциональность, чтобы охватить случай, когда кто-то выполняет поиск по штату.

Так что, если кто-то введет «CA», поиск будет возвращать каждый список в Калифорнии.Если пользователь введет «Лос-Анджелес», список в Лос-Анджелесе будет возвращен.Короче говоря, я бы хотел запросить 2 дБ поля одновременно и вернуть соответствующие результаты.Можно ли это сделать с помощью простого заявления?

1 Ответ

5 голосов
/ 24 марта 2011

Лучше всего было бы реализовать полнотекстовое решение, такое как solr или sphinx.В качестве альтернативы, если вы хотите, чтобы все было как можно проще на данный момент, вам просто ИЛИ поиск:

def self.search(search)
  if search
    find(:all, :conditions => ['city LIKE ? OR state LIKE ?', ["%#{search}%"]*2].flatten)
  else
    find(:all)
  end
end

ОБНОВЛЕНИЕ: альтернативный синтаксис (лучше) через Джеффри В.

find(:all, :conditions => ['city LIKE :search OR state LIKE :search', {:search => "%#{search}%"}])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...