Para que se hagan una idea... Esta parece ser una solución usando find_by_sql:
class AcademicProgram < ActiveRecord::Base
belongs_to :location
def self.related_locations
Location.find_by_sql("SELECT DISTINCT l.* FROM academic_programs p
LEFT JOIN locations l ON p.location_id = l.id")
end
end
Entonces puedo hacer esto en el controller:
AcademicProgram.related_locations.map(&:name)
Y con eso obtengo un Array con los nombres de las locations que tienen
al menos un academic_program.
Pero me gustaría saber si alguien conoce otra solución. Mejor si no
usa find_by_sql.
Gracias
On 10/30/07, Diego Algorta Casamayou <[EMAIL PROTECTED]> wrote:
> 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
>
--
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