[Ror-es] Conditions de un paginate en forma de cadena
javier ramirez
jramirez at aspgems.com
Wed Aug 1 11:09:31 GMT 2007
Hola,
> ['campo1 like ? and campo2 like ? and campo3 like
> ?', at campo1, at campo2, at 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
More information about the Ror-es
mailing list