Hola,
[‘campo1 like ? and campo2 like ? and campo3 like
?’,@campo1,@campo2,@campo3]
percatado de que no podÃa ser tipo cadena. Asà pues alguien sabe de
alguna función o algo que me permita transformar esa cadena en lo que me
pide el método paginate?
pues… hay dos sintáxis de la claúsula conditions que vienen muy bien
para estos casos. Cuando tienes sólo un campo o dos como condition lo
del ? viene muy a mano, pero cuando tienes más campos es posible tirar
de otras soluciones.
puedes usar un conditions tal que
:conditions=>{:campo1=>variable_1, :campo2=>:variable2}
esto te hace una claúsula where con los campos y valores que le das
separados por AND
otro caso posible es
:conditions=>[‘campo1 > :campo1 OR campo2 >
:campo2’,{:campo1=>valor1,:campo2=>valor2}]
eso te funciona como el ? pero vas con variables con nombre en lugar de
?
según cómo lo quieras organizar cualquiera de las dos te puede funcionar
bien, aunque en tu caso lo mismo es más fácil la primera. Es cuestión de
ir añadiendo dinámicamente a una estructura las variables que quieres
incluir en la where. De hecho, si estructuras tu form bien, puede ser
tan fácil como hacer
:conditions=>params[:mi_modelo]
si estás buscando directamente de un modelo que aparece en un form, con
eso te vale. Te harÃa un AND de todos los campos que le pases con esos
valores (eso sÃ, no te vale para LIKE, >, <, etc… para esos casos
tendrÃas que ir por la opción b)
saludos,
j