2012-03-21 10 views
5

tengo el siguiente ámbito con nombre:ámbito con nombre - número incorrecto de variables se unen

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

Cuando corro, me sale el mensaje de error:

wrong number of bind variables 

Le agradecería que si alguien pudiera ayúdame a descubrir qué está mal con el código.

Muchas gracias

Respuesta

8

Usted necesita una variable para cada signo de interrogación en su estado de cuenta se unen. Si son todos iguales, es necesario repetirlos varias veces:

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

Gracias por la respuesta rápida. ¿Hay alguna otra forma de realizar la condición 'o' sin repetir el argumento? – Kim

+0

Kandada me golpeó al golpe. Así es como lo harías con solo repetirlo una vez. – Veraticus

14

Se pueden utilizar variables de vinculación llamada si no quiere repetir la entrada.

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] 
    } 
} 
Cuestiones relacionadas