JavaFree.org | RubyOnBr.org

Associações

Acompanhar Associações 16 posts, 6 participantes

Ma João Jr 78 posts

Chega a hora cruel. Relacionamentos.

Digamos que possuo 2 models. (professor / escola)
1º fazer associações (um professor pode estar em várias escolas e escola pode ter vários professores).

Seria mais ou menos isso?
Model Professor

Model Escola

Não sei se é bem assim pq ai vem o problema 2.

2º como faço para quando eu clicar em uma escola aparecer todos os professores existentes nela.

Detalhe: como referência, utilizarei como chaves primarias (cpf e cnpj)

De todos meus posts esse é o que mais ta fundido minha cuca.

 
Cad10cd22abe80cca76b7579af2906e8 Ronaldo Possan 974 posts

\^/

 
Ma João Jr 78 posts

Valeu Ronaldo. Vou testar

 
Ma João Jr 78 posts

Deixa eu abusar da paciência de vcs.

Ok então, tenho já o relacionamento feitos através do Active Record.
Onde é que eu faço o cruzamento, que professor “x” e da escola “y”? Ou eu tenho que criar uma tabela do meio [professor_escola] e relacionar.
Ex: professor – professor_escola – escola (via chave primária).

Mais uma vez valew.

 
Avatar Fernando Luizão 1863 posts

http://guides.rubyonrails.org/association_basics.html

 
Cad10cd22abe80cca76b7579af2906e8 Ronaldo Possan 974 posts

professor.escola

Sinmplesmente o processo inverso.

Abraço !

 
Ma João Jr 78 posts

Eu teria que criar uma nova def no controller e chamar na view, ou depois que fez a associação pode chamar direto na view.

?

 
Avatar Marcelo Pereira 78 posts

Afinal de contas, “como” alterar a migration de modo a criar as chaves estrangeiras???

Já li a documentação, tutoriais, procurei no forum, e ainda nao consegui descobrir “como” incluir as FK.

Terei que fazer o “ALTER TABLE” e adicionar a FK diretamente no banco de dados, “no braço”??? ;-)

Agradeço a ajuda!!

Um abraço,
Marcelo

 
Avatar nofxx 1960 posts

alter_table :foo |t|
t.references ..

ou

add_column :table, :foo_id, :integer

Ta tudo no rails guide, em pt.

 
Avatar wmalheiros 172 posts

Tem uma alternativa que é instalar algum plugin pra melhorar isso de ficar escrevendo sql na mão não é? Tem por exemplo o Foreigner. Daí vc pode fazer coisa do tipo:

Compensa dar uma pesquisada.

[]’s

 
Avatar Marcelo Pereira 78 posts

Com o Foreigner funcionou exatamente da forma que eu esperava!!

Muito obrigado!
Marcelo

 
Avatar nofxx 1960 posts

Caraca, aparentemente eu ñ estava acordado ainda…

Bom, soh pros anais então, FK eh soh constraint.
Não ha ganho nenhum de performance.

 
Avatar Marcelo Pereira 78 posts

Ola Nofxx,

Acho que ninguem acima neste post falou de performance!! ;-)

Particularmente, eu preciso da FK no banco porque esta aplicação tem views escritas em PHP, em Java e em Ruby, e por diversas pessoas (inclusive, algumas delas nem se conhecem). Assim, é melhor garantir a integridade dos dados diretamente no banco de dados.

Deixar a integridade dos dados na mão dos programadores (ainda mais com linguagem e pessoas diferentes) poderia trazer inconsistencias catrastóficas!! ;-)

Grande abraço,
Marcelo

 
Avatar nofxx 1960 posts

Agora sim, fomos surpreendidos novamente. ;)

Tu achou um uso realmente…

 
Cad10cd22abe80cca76b7579af2906e8 Ronaldo Possan 974 posts

Humn … dando uma de bicão no seu projeto …
Já pensou de se disponibilisar Web Services para essa integração ?! Unificaria uma plataforma e tudo seria centrado nela … Precisa de uma consulta X que retorne Y !? Ok, implemente um WebService para isso …
Pode parecer tiro no pé no status atual do projeto, mas pensando futuramente … com WS seu sistema central integra até com a geladeira da vizinha. =P

Penso que após o trabalho inicial de toda a implementação (trabalhão lógico, se não for com Rails né … pq Rails ja te da isso pronto), a manutenção de inprovments do sistema ficaria centrada e totalmente responsável por todo o escopo externo.

Lógico, não sei realmente quais são seus requisitos, prioridades, etc etc … Mas que funcionaria bem mais suave dessa forma, isso é certeza !

Abraço
\^/

 
Avatar Marcelo Pereira 78 posts

Oi Ronaldo,

Sugestões são sempre bem vindas!!

Disponibilizar Web Services com certeza seria algo a se fazer. Porém, isso vai ficar para as próximas versões!! Por agora, preciso apenas resolver o problema de integridade, no estado atual da aplicação.

Em paralelo, vamos migrar e passar a utilizar WS, assim o problema praticamente desaparece, e posso aceitar scripts feitos em qualquer linguagem!!

Obrigado pela mensagem!! ;)

[]s
Marcelo