2012-01-05 2 views
0

LIKE를 수행하고 인수를 전달하는 가장 좋은 방법은 무엇입니까?두 개의 다른 열에서 검색하기 위해 LIKE 및 OR 전달 인수와 함께 범위 사용

사용자가 우편 번호 (숫자) 또는 교외 이름 (문자열)을 입력 할 수있는 자동 완성 필드가있어서 두 개의 다른 열에서 검색을 시작하는 것이 좋습니다.

그러나 나는 그것이 작동하지 않는 경우의 순간에서 다음을하고 있어요 :

scope :search_by_postcode, lambda { |q| where("postcode LIKE ? OR postcode_name LIKE ?", "%#{q}%", "%#{q}%").limit(10) } 

은 무엇 주위 길을 가야하는 것입니까?

+0

:

귀하의 범위는 다음과 같을 것이다? 오류가 무엇입니까? – Stefan

답변

1

그것은 Squeel 고려 가치 : 무엇을 작동하지

scope :first_ten_by_postcode_or_suburb_name, lambda { |q| where{postcode.matches(q) | suburb_name.matches("%#{q}%")}.limit(10) } 
+1

답변을 주셔서 감사합니다. 비슷한 솔루션을 구현했지만 Arel을 사용했습니다. q = "# {params [: term]} %" t = Location.arel_table locations = Location.where (t [: postcode] limit (10) – Digger

+0

@Digger 당신은 자동 완성을 위해 soulmate gem을 보았습니까? UI의 응답 성을 높이려면 가치가있을 수 있습니다. – jake