1
resposta

Trabalhado com 3 tabelas

Pessoal, Meu usuário tem acesso a vários grupos de trabalho, então minha tabela de usuário deve fazer uma associação com a tabela de grupo, nesse caso, preciso de uma tabela associativa. Como faço para trabalhar com 3 tabelas? Tabelas: Usuário(id_usuario,nome_usuario,senha,id_grupo). Associativa(id_usuario,id_grupo). Grupo(id_grupo,nome_grupo). Quero mostra na tela todos os grupos que estão associados ao usuário.

1 resposta

Olá Mario, Você está procurando uma associação do tipo has_and_belongs_to_many, como pode ser visto aqui -> http://edgeguides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

Caso você já tenha as tabelas você pode fazer override do nome das tabelas e campos, contudo o ideal é sempre manter elas nos migrations.

Aqui http://edgeguides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many neste ponto é abordado duas formas de alcançar este objetivo, uma é fazendo a relação has_and_belongs_to_many entre duas classes, a outra é fazer assim:

Usuario has_many Grupos through Associativas
Associativa belongs_to Usuario
Associativa belongs_to Grupo
Grupo has_many Usuarios through Associativas

Você pode em todas estes relacionamentos cada qual em seu arquivo sobrescrever as tabelas e colunas caso deseje usando foreign_key:.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software