# Relacionamento com campos diferentes de id

**URL:** <https://www.ruby-forum.com/t/relacionamento-com-campos-diferentes-de-id/173278>\
**Category:** Rails\
**Created:** [August 6, 2009, 6:20am UTC](https://www.ruby-forum.com/t/relacionamento-com-campos-diferentes-de-id/173278 "2009-08-06T06:20:50Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![cifroes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/53a042/32.png) [@cifroes](https://www.ruby-forum.com/u/cifroes)\
**Post date:** [August 6, 2009, 6:20am UTC](https://www.ruby-forum.com/t/relacionamento-com-campos-diferentes-de-id/173278/1 "2009-08-06T06:20:50Z")

</div>

Pessoal estou tentando fazer um relacionamento com os seguintes campos:

TABELA PESSOA  
cpf --\> RELACIONAR  
nome  
data

TABELA DIVIDA  
id  
descricacao  
pessoa\_cpf --\> RELACIONAR

VIsto que nÃ£o se trata de um campo ID tentei fazer da seguinte forma,  
porÃ©m,  
nÃ£o funcionou:

class Divida \< ActiveRecord::Base

belongs\_to :pessoa , :foreign\_key =\> ‘cpf’

end

class Pessoa \< ActiveRecord::Base

has\_many :dividas

end

TÃ´ querendo atravÃ©s da busca que meu controller faz poder exibir na view  
da  
seguinte forma:

divida.pessoa.nome

QUem puder me dar uma luaz agradeÃ§o muito! 🙂

valew!

Paulo Roberto

---

<div class="post-metadata">

**Author:** ![cifroes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/53a042/32.png) [@cifroes](https://www.ruby-forum.com/u/cifroes)\
**Post date:** [August 6, 2009, 6:30am UTC](https://www.ruby-forum.com/t/relacionamento-com-campos-diferentes-de-id/173278/2 "2009-08-06T06:30:23Z")

</div>

My Portuguese is not that good. But if I understand correctly…

Paulo S. wrote:

> Pessoal estou tentando fazer um relacionamento com os seguintes campos:
> 
> TABELA PESSOA  
> cpf → RELACIONAR  
> nome  
> data
> 
> TABELA DIVIDA  
> id  
> descricacao  
> pessoa\_cpf → RELACIONAR
> 
> VIsto que nÃ£o se trata de um campo ID tentei fazer da seguinte forma,  
> porÃ©m,  
> nÃ£o funcionou:
> 
> class Divida \< ActiveRecord::Base
> 
> belongs\_to :pessoa , :foreign\_key =\> ‘cpf’

Right, that won’t work, because :foreign\_key should name the foreign key  
field in _this_ table, so it should be pessoa\_cpf. You’ll also need to  
do  
class Pessoa  
set\_primary\_key :cpf  
end

> end
> 
> class Pessoa \< ActiveRecord::Base
> 
> has\_many :dividas
> 
> end
> 
> TÃ´ querendo atravÃ©s da busca que meu controller faz poder exibir na view  
> da  
> seguinte forma:
> 
> divida.pessoa.nome
> 
> QUem puder me dar uma luaz agradeÃ§o muito! 🙂
> 
> valew!
> 
> Paulo Roberto

I think what I suggested should work. Boa sorte!

## Best,

Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![cifroes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/53a042/32.png) [@cifroes](https://www.ruby-forum.com/u/cifroes)\
**Post date:** [August 6, 2009, 6:38am UTC](https://www.ruby-forum.com/t/relacionamento-com-campos-diferentes-de-id/173278/3 "2009-08-06T06:38:24Z")

</div>

I having test using set\_primary\_key, but print message error:

a.pessoa.nome  
NoMethodError: You have a nil object when you didn’t expect it!  
The error occurred while evaluating nil.nome

2009/8/6 Marnen Laibow-Koser [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> > data  
> > nÃ£o funcionou:  
> > end
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> >

–  
Paulo Roberto  
Webdesigner  
Fortaleza - CE

---

<div class="post-metadata">

**Author:** ![cifroes](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/53a042/32.png) [@cifroes](https://www.ruby-forum.com/u/cifroes)\
**Post date:** [August 6, 2009, 9:37pm UTC](https://www.ruby-forum.com/t/relacionamento-com-campos-diferentes-de-id/173278/4 "2009-08-06T21:37:32Z")

</div>

Paulo:  
Vc tem mais cÃ³digo no controlador ? E qual serÃ­a o cÃ³digo da vista ?  
Este erro que vc informa agora, acho que nao tem a ver com a definiÃ§ao  
das  
clases, indicada na resposta de Marnen  
Esse erro pode ser que o objeto a nao tem valor (Object nil) entao nao  
pode  
ser achado pessoa.nome.  
Vc pode ver se este erro Ã© do controlador ou da vista desde a consola do  
servidor Rails ou bem utilizando o Firebug que Ã© uma otima ferramenta do  
Firefox para vc ver o HTML gerado, javascript, CSS etc…  
Boa sorte,  
FF

2009/8/6 Paulo S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
