Including join model data


#1

I`m using the joing model Part to access Treinando from Evento.
This code works well:

@treinandos = Evento.find(params[:evento_id]).treinandos

But the parts table has some more columns I need to retrieve
addtionally.
Even after some docs/googling and tests I was not able to append this
information to the resulting object @treinandos.

Can you give some hints about how to do it?

Models:

class Treinando < ActiveRecord::Base
has_many :parts
has_many :eventos, :through => :parts
end
class Part < ActiveRecord::Base
belongs_to :treinando
belongs_to :evento
end
class Evento < ActiveRecord::Base
has_many :parts
has_many :treinandos, :through => :parts
end


#2

Well, I found a way, but it is not a optimized (rails way) one, since
it executes a find for each “part” record, more some selects.

parts = Evento.find(params[:evento_id]).parts
@treinandos = []
parts.each do |part|
  obj = Treinando.find(part.treinando_id)
  obj[:padrinho] = part.padrinho.nome if part.padrinho_id
  obj[:presenca] = part.presenca
  @treinandos << obj
end

If you have any idea about the rails way to do it, please tell me.