Emmanuel, debo reconocer que tu solución es nueva para mí. Está buena.
Pero la probé y el AcademicProgram.count necesitó 2 queries a la base
para traer el resultado:

SELECT count(DISTINCT academic_programs.id) AS count_id, location_id
AS location_id FROM academic_programs LEFT OUTER JOIN locations ON
locations.id = academic_programs.location_id GROUP BY location_id

SELECT * FROM locations WHERE (locations.`id` IN (1,2,3,4,5,6,7,8,22,31,74))

Gracias,
Yo

On 10/30/07, Emmanuel Oga <[EMAIL PROTECTED]> wrote:
> Fijate si funciona:
>
> aps_by_locations= AcademicProgram.count(:id, :include => :location, :group
> => :location)
>
> aps_by_locations.keys => [Instancia de Location, Instancia de Location, ...]
>
> aps_by_locations.values => [1, 2, 3, etc...]
>
> Ahora podes hacer
>
> wanted_aps= aps_by_locations.delete_if { |location, ap_quantity| ap_quantity
> < 1 }.keys
>
> wanted_aps te devuelve un array de instancias de AcademicProgram que tengan
> mas de una Location.
>
>
>
>
>
>
> Diego Algorta Casamayou <[EMAIL PROTECTED]> escribió:
>  Hola amigos.
>
> Tengo (simplificado) estos 2 modelos relacionados así:
>
> class AcademicProgram < ActiveRecord::Base
>  belongs_to :location
> end
>
> class Location < ActiveRecord::Base
>  has_many :academic_programs
> end
>
> Ahora debo obtener la colección de instancias de Location que tengan
> al menos 1 AcademicProgram. ¿se entiende? Es para mostrar en un
> select_tag las locations donde existen academic_programs.
>
> Quisiera saber qué distintas soluciones encuentran, ya sea usando
> find_by_sql o mejor, algo más "Rails Way".
>
> --
> Diego Algorta Casamayou
> http://www.oboxodo.com - http://diego.algorta.net
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
>
>  ________________________________
>
> Yahoo! Noticias
> Todo lo que tenés que saber sobre Elecciones Presidenciales 2007 encontralo
> en Yahoo! Noticias.
>  http://ar.news.yahoo.com/elecciones2007/
>
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>


-- 
Diego Algorta Casamayou
http://www.oboxodo.com - http://diego.algorta.net
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a