A associação HABTM em Rails é uma maneira limpa e muito poderosa de definir associações cruzadas múltiplas entre instâncias de dois modelos.
Leia aqui para determinar se é ou não a melhor solução para o seu projeto. Se for, aqui está um rápido tutorial sobre como implementá-lo.
Vamos dar um exemplo em que as indústrias podem ter vários setores e os setores podem pertencer a várias indústrias.
Em seu arquivo industry.rb (observe – use referências plurais para seus modelos ao definir a associação):
has_and_belongs_to_many :sectors
Em seu arquivo sector.rb:
has_and_belongs_to_many :industries
Agora crie uma tabela para mapear as associações (nota – certifique-se de usar referências em minúsculas para os modelos, pois isso garante que o nome da tabela segue a convenção esperada do Rails):
rails g migration CreateJoinTableIndustrySector industry sector
Vamos supor que desejamos apenas atribuir setores a indústrias por meio da visualização “_form” da indústria, então agora atualize sua visualização (observe – este exemplo usa slim e simple_form ).
= simple_form_for(@industry) do |f|
= f.input :name
...
= f.association :sectors, as: :select
= f.button :submit
e, finalmente, atualize seu controlador para considerar parâmetros fortes:
params.require(:industry).permit(:name, ... , sector_ids: [])
Agora execute “rake db: migrate” para criar sua tabela de junção, reinicie seu servidor e pronto 🙂