[Ror-es] Busqueda con joins
Xavier Noria
fxn at hashref.com
Tue Apr 24 09:32:44 GMT 2007
On Apr 24, 2007, at 1:00 AM, Manuel Chacana L wrote:
> Saludos a todos.
>
> Primero dar gracias por todas las ideas y soluciones expuestas.
>
> Ahora mi problema, tengo un modelo de esta forma
>
>
> class Grupos< ActiveRecord::Base
>
> has_many :usuarios
>
> end
>
> class Usuarios< ActiveRecord::Base
>
> belongs_to :grupo
>
> end
>
> Donde Grupos tiene un nombre, descripción y otras cosas mas, por la
> parte de los usuarios tienen nombre, apellido, interés, etc.
>
> y tengo que hacer una consulta que me entregue una "lista de
> grupos" que contenga X palabra y que algún usuario se llame Y
>
> como puedo hacer esa consulta?
Escribirias algo asi:
Grupos.find(
:all,
:include => :usuarios,
:conditions => [<<-SQL, param1, param2, ...]
grupos.nombre LIKE ? AND
grupos.descripcion LIKE ? AND
... AND
usuarios.nombre = ? OR
usuarios.apellido = ?
SQL
)
Lo clave es el :include y el usar el nombre de las tablas en las
condiciones.
>
> Trate de hacerlo con ferret pero no encontré como decirle que
> busque de esa forma.
Segun suelen recomendar en la lista de ferret, para poder buscar con
joins en ferret hay que indexar la join "plana", es decir, debes
saber de antemano que necesitaras buscar de esa manera y guardar para
cada grupo el nombre y apellidos de todos sus integrantes. Asi, cada
grupo en vez de generar una tupla en ferret genera tantas como
usuarios distintos tiene.
-- fxn
More information about the Ror-es
mailing list