habtm ou has_many :through?

Posted by Leonardo Mon, 13 Aug 2007 00:57:00 GMT

Há alguns dias atrás, precisei criar uma associação m x n e fiquei na dúvida entre usar o has_and_belongs_to_many ou o has_many :through. Como sabia que o primeiro era o modo antigo de se fazer esse tipo de associações, e o segundo o "novo", fui pesquisar um pouco mais para saber qual dos dois iria usar.

Habtm

O habtm funciona muito bem quando se quer apenas uma associação simples, sem um modelo associado a essa tabela de relacionamento. Por associação simples, quero dizer que a tabela de relacionamento não possui mais nenhum campo além dos ids das tabelas relacionadas.

Has_many :through

Se quisermos ter informações adicionais na tabela de relacionamento ou um modelo onde podemos ter controle sobre os relacionamentos, então o has_many :through é o caminho a seguir.

A escolha acabou se tornando simples após essa pesquisa. Se tiver um relacionamento simples, escolha a primeira representação. Caso contrário, use a segunda.

Outra coisa importante de se destacar é que, se você quiser seguir o estilo REST, escolha o has_many :through porque, através do modelo criado, é possível expor o CRUD para esse relacionamento.

Posted in  | Tags ,  | no comments

Comments

(leave url/email »)

   Preview comment