Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre Rodrigues Pereira

forma de associação

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.