[Resolvido] Dúvida em uma forma de associação

Olá pessoal,

Sou novo em Rails e estou montando uma aplicação em RoR, mas que possui uma estrutura de relacionamentos um pouco mais complexos do que estudei até agora. E agora cheguei em um ponto que não consigo encontrar uma forma de fazer elas funcionarem.
É o seguinte:

Basicamente, tenho os models:

  • Professor
  • Disciplina
  • MatrizCurricular (que informa a disciplina para o ano letivo e bimestre)
  • ResponsavelDisciplina (que informa para cada disciplina quem é o responsável no ano letivo e bimestre)

Então tenho a relação:

Disciplina ----> MatrizCurricular
|-----------> ResponsavelDisciplina -----> Professor

onde fiz:

class Professor < ActiveRecord::Base
  has_many :responsaveis_disciplinas
end

class Disciplina < ActiveRecord::Base
  has_many :matrizes_curriculares
end

class MatrizCurricular < ActiveRecord::Base
  belongs_to :disciplina
end

class ResponsavelDisciplina < ActiveRecord::Base
  belongs_to :professor
  belongs_to :disciplina
end

Até aqui tudo bem, eu consigo partindo da disciplina, saber os responsaveis dela, partindo do professor, saber quais disciplinas ele é responsável. Só que não consigo saber pela matriz curricular, por sua disciplina, qual é o responsável dela no bimestre e ano da matriz. No find, eu posso colocar condições, mas eu precisava disso na associação mesmo, uma forma da própria matriz curricular (pelo campo disciplina_id dela) eu conseguisse saber o responsável diretamente, já usando as condições do bimestre e ano letivo da matriz. Ex.:

@m = MatrizCurricular.find_by_id(1)
puts @m.responsavel_disciplina

Isso até me parece básico, mas estou a dias procurando de várias maneiras no google para ver se acho algo parecido com o que preciso, mas não consigo encontrar.

Alguém pode me ajudar?

Consegui resolver, vou deixar aqui a solução que encontrei. Se tiver errado, peço que me corrijam para que eu possa aperfeiçoar.

Obrigado

class MatrizCurricular < ActiveRecord::Base
  belongs_to :disciplina
  has_many :disciplinas_responsaveis, 
           :through => :disciplina,
           :conditions => proc { ["disciplinas_responsaveis.ano_calendario = ? AND 
                                   disciplinas_responsaveis.bimestre = ?", self.ano_calendario, self.bimestre] }

end

Tudo bem andrerpbts?

Queria pedir um favor, pode editar o título original do post e adicionar: “[Resolvido]” no título?
Assim já fica mais claro para a galera que vier pesquisar ou tentar te ajudar quando olha a lista de posts no fórum, que acha?