2012-03-21 4 views
5

나는 다음과 같은 명명 된 범위를 가지고 누군가가 할 수있는 경우라는 이름의 범위 - 바인드 변수의 잘못된 번호

wrong number of bind variables 

내가 그것을 감사하겠습니다 : 나는 그것을 실행하면

named_scope :report_search, lambda { |search| 
    { 
    :conditions => ["rep_name like ? or rep_id like ? or rep_symbol like ? or rep_issue like ?", search] 
    } 
} 

, 내가 오류 메시지를 코드에 문제가 있다는 것을 알아낼 수있게 도와주세요.

많은 감사

답변

8

bind 문에서 각 물음표에 대해 하나의 변수가 필요합니다. 그들은 모두 같은 경우에, 당신은 그들에게 여러 번 반복해야합니다 : 당신이 입력을 반복하지 않으려면

named_scope :report_search, lambda { |search| 
    { 
    :conditions => ["rep_name like ? or rep_id like ? or rep_symbol like ? or rep_issue like ?", search, search, search, search] 
    } 
} 
+1

빠른 답변 감사드립니다. 인수를 반복하지 않고 '또는'조건을 수행하는 다른 방법이 있습니까? – Kim

+0

칸다다가 저를 때려 눕혔습니다. 그렇게 한 번만 반복하면됩니다. – Veraticus

14

당신은 이름을 바인드 변수를 사용할 수 있습니다.

named_scope :report_search, lambda { |search| 
    { 
    :conditions => [" rep_name LIKE :search OR 
         rep_id  LIKE :search OR 
         rep_symbol LIKE :search OR 
         rep_issue LIKE :search", :search => search] 
    } 
}