2010/7/30 Emmanuel Oga <[email protected]>: > 2010/7/30 Fernando Parra <[email protected]>: >> Estimados Rubyists!! >> >> Les presento el problema. A continuación los modelos que forman parte de mi >> app: >> >> Worker >> Skill >> Subcategory >> Category >> >> Una categoría puede tener muchos workers a través de skills y >> subcategories, y un worker puede a su vez, pertenecer a más de una >> categoría siguiendo la misma lógica. >> Lo que quiero hacer, es filtrar workers que pertenezcan a ciertas >> categorías y agruparlas en un Hash, como esto: >> [<#Category1>] => [<#Worker1>, <#Worker2, .... ]. >> >> Lo que pude hacer, es filtrar workers por categorías de la siguiente forma: >> Worker.all(:joins => { :skills => :subcategory}, :conditions => >> ['subcategories.category_id IN (?)', 1]) >> >> Se les ocurre como debería hacer la agrupación por categoría? >> Lamentablemente con el código de arriba, si encadeno un método >> group_by o lo que fuera, lo estaría trabajando sobre un array de >> objetos del tipo Worker y no dispondría del category_id que se obtiene >> al hacer el join (y en lo posible quisiera evitar cosas como >> find_by_sql). > > Proba seleccionar la columna usando la opción :select > > all = Worker.all(:joins => { :skills => :subcategory}, :conditions => > ['subcategories.category_id IN (?)', 1], :select => "workers.*, > subcategories.category_id as category_id") > > con eso tendrías que poder hacer algo como: > > all.first.category_id > > o si no > > all.first.attributes["category_id"] > > Si eso funciona, finalmente podrías hacer: > > all.group_by(&:category_id) > > Igual, se me hace que te vendría bien desnormalizar (un habtm > "workers_categories" por ej) > >> >> Desde ya, >> Muchas gracias! >> _______________________________________________ >> Ruby mailing list >> [email protected] >> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >> > > > > -- > -------------------------------------------------------------- > EmmanuelOga.com - Software Developer > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >
Exacto. Eso era lo que necesitaba. Gracias Ema y Diego por las respuestas. _______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
