2011-03-24 4 views
1

2 db 열을 검색하여 결과를 반환하는 명령문을 작성하려고합니다. Searchlogic과 같은 보석을 사용하지 않고도 쉽게 할 수 있습니까?Rails 3.0에서 여러 개의 db 열 검색

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

내 데이터베이스의 도시 필드에 대한 검색을 수행하는 문장입니다. 그러나 나는 주 (state)별로 검색하는 사례를 다루기위한 기능을 포함하고자합니다.

누군가가 'CA'를 입력하면 검색은 캘리포니아의 모든 업체 정보를 반환합니다. 사용자가 '로스 앤젤레스'를 입력하면 로스 앤젤레스의 목록이 반환됩니다. 간단히 말해서, 나는 동시에 2 db 필드를 쿼리하고 적절한 결과를 반환하고 싶습니다. 이것은 간단한 진술로 끝날 수 있습니까?

답변

5

가장 좋은 방법은 solr 또는 sphinx와 같은 전체 텍스트 솔루션을 구현하는 것입니다. 당신이 지금은 가능한 한 간단하게 물건을 유지하려는 경우 또는, 당신이하는 것과 OR 검색 :`: 조건 Jeffrey W.

find(:all, :conditions => ['city LIKE :search OR state LIKE :search', {:search => "%#{search}%"}]) 
+4

어떻 통해 구문 대안 (더 나은) :

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

UPDATE => [ '도시 LIKE : 검색 OR 상태 LIKE : 검색', : 검색 => "% # {검색} %")'? –

+0

@jeffrey, 네, 나는 더 좋아. 솔직히 당신이 그걸 할 수 있다는 걸 잊었습니다. – mnelson

+0

감사합니다. 이것은 분명히 내가 찾고있는 해결책이다. 내 쿼리가 이보다 훨씬 복잡해질 것이라고 생각하지 않기 때문에 문제를 해결하기 위해 검색 젬을 사용하지 않는 것이 좋습니다. – mdunkle

관련 문제