Relacionamentos

3 respostas
R

Galera, sempre tive uma dúvida que pode ate ser besta, mas que me martela a cabeça:

Para que serve colocar o relacionamento nos models do rails?
tipo: belongs_to, has_many, etc… Se é nescesário coloca-los nas migrations?

3 Respostas

T
Os relacionamentos no Rails são necessários para expressar o relacionamento natural entre as entidades. Por exemplo, se um vendedor tem várias vendas, expressamos esse relacionamento da seguinte forma:
class Vendedor < ActiveRecord::Base
  has_many :vendas # Um vendedor tem várias vendas
end

class Venda < ActiveRecord::Base
  belongs_to :vendedor # Uma venda pertence a um vendedor
end
O ganho prático é que você agora tem um atributo vendas na classe Vendedor que retorna um array contendo todas as vendas:
vendedor = Vendedor.where(:nome => 'Romulo')
# Acessando as vendas do vendedor
vendedor.vendas
Da mesma forma, você ganha um atributo na classe Venda que retorna a instância do vendedor associado a ela:
venda = Venda.first
# Acessando o vendedor da venda
venda.vendedor
Esse relacionamento é expresso também nas migrações, pois a tabela de vendas precisa ter um campo que armazene o vendedor associado.
create_table :vendas do |t|
  # ...
  t.references :vendedor
end
R

Muito obrigado tnaires!!
Achei aqui um guia que irá ajudar quem tem essa mesma dúvida e outras do tipo: http://guias.rubyonrails.pro.br/association_basics.html

T

Se você souber inglês, recomendo que você abandone essa tradução e leia o original. Essa tradução está desatualizada.
http://guides.rubyonrails.org/

Criado 22 de julho de 2011
Ultima resposta 22 de jul. de 2011
Respostas 3
Participantes 2