2009/9/20 Ruben. D. <[email protected]>

> Foo.all(:joins => :properties, :conditions => { 'properties.key' => 'k',
>   :'properties.value' => 'v' })
>
> Si quieres buscar por multiples valores para el value le puedes pasar un
> Array y AR automáticamente usará un condición "IN ('v1', 'v2')".
>

En lugar de :joins usaría :includes; algo como

Foo.all :include => :properties, :conditions => [ "properties.name = ? AND
(properties.value = ? OR properties.value = ?)", k, v1, v2 ]

o, en este caso, el OR se puede reemplazar por el operador IN

Foo.all :include => :properties, :conditions => { "properties.name" => k,
"properties.value" => [v1,v2] }

Si el uso de fragmentos SQL no te gusta o includes manuales, mirate
SearchLogic <http://github.com/binarylogic/searchlogic>, en donde sería algo
así

Foo.all :conditions => { :properties => { :name => k, :value => [v1, v2] } }

(también se pueden mergear condiciones con OR, pero es un poco más complejo
y hace un rato que no lo uso)

PD: código no testeado, puede fallar =D

-- nachokb
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a