2015-02-04 5 views
0

안드로이드에 필터링 드롭 다운 검색 필드를 구현하려고합니다. 내 RESTful 템플릿과 레일 API를 사용하고 있습니다. 스킬이라는 모델이 있습니다. 내가 할 수 있기를 원하는 것은 GET 요청으로 문자열을 전달하고 문자열을 포함하는 이름을 가진 문자열 만 반환하는 사용자의 기술을 쿼리하는 것입니다.rails : 정규 표현식을 사용하는 검색어

def index 
    search_string = params[:myString] 
    @skills= curr_user.skills.where(skill_name: contains search_string) 
    render json: @skills 

    end 

아이디어 :

나는 같이 보일 것입니다 상상 것?

감사

+0

이 매우 불쾌 할 것이다. 가장 가까운 것은 SQL에 와일드 카드가있는 LIKE이지만 SQL 자체는 검색을 위해 정규 표현식이 아닙니다. 문자열의 시작 부분을 검색하지 않는 한 와일드 카드를 사용하는 경우에도 피해야합니다. 그렇지 않으면 인덱스로도 큰 데이터 세트에서 슈퍼가 느려지 게됩니다. –

+0

흠, 좋아. 더 빠른 솔루션을 추천 해 주시겠습니까? – Will

+0

문자열을 개별 단어로 분리하여 단어 테이블에 저장하는 것을 고려하십시오. 이 작업을 수행하면 조인 테이블을 만들어 문자열을 다시 묶을 수 있지만 전체 문자열에 대해 와일드 카드를 사용하는 대량 비효율적 인 LIKE 절이 아닌 개별 단어를 검색 할 수도 있습니다. –

답변

0

당신은 레일 where을 활용할 수 like

def index 
    search_string = params[:myString] 
    @skills= curr_user.skills.where("skill name LIKE ?", "%#{search_string}%") 
    render json: @skills 
end