Dúvido associações belongs_to

6 respostas
Dennys

Pessoal,

Estou com uma dúvida, tenho a classe abaixo mas por algum motivo ela não esta salvando o atributo pai(adicionei na mão). Não sei se preciso rodar algo no rake db para funcionar, etc.

filho = Pessoa.new
filho.nome = "Dennys"

pai = Pessoa.new
pai.nome = "Luiz"

filho.pai = pai

filho.save
class Pessoa < ActiveRecord::Base
  attr_accessible :altura, :data_de_nascimento, :foto, :nome, :pai
  belongs_to :pai, :class_name => "Pessoa", :autosave => true
end

Obrigado!

6 Respostas

ricardo.valeriano

Olá @Dennys, tudo em ordem?

Cara, parece estar tudo certo com o seu exemplo, alguma mensagem de erro foi exibida no teste?

Dennys

ricardo.valeriano:
Olá @Dennys, tudo em ordem?

Cara, parece estar tudo certo com o seu exemplo, alguma mensagem de erro foi exibida no teste?

Olá Ricardo!

O erro é não salvar a associação que foi feita entre a classe pai e filho.

Se eu recuperar o filho do banco a propriedade pai vai estar nil, não foi salva!

Será um erro meu? Ou não existe um cascade persist ?

Muito obrigado!!

ricardo.valeriano

Tudo bem @Dennys?

Então, a princípio, o código que você postou, deveria ser o suficiente para ter o efeito que você está esperando (gravar o registro “pai” quando o filho recebe uma invocação de #save). Por isso perguntei se está aparecendo algum erro de execução, ou algo do tipo.
Qual versão do Rails você está usando?

Dennys

ricardo.valeriano:
Tudo bem @Dennys?

Então, a princípio, o código que você postou, deveria ser o suficiente para ter o efeito que você está esperando (gravar o registro “pai” quando o filho recebe uma invocação de #save). Por isso perguntei se está aparecendo algum erro de execução, ou algo do tipo.
Qual versão do Rails você está usando?

Olá Ricardo!

Eu devo ter feito alguma besteira, fiz outro testes e funcionou.

Um ponto que fiquei com dúvida foi o rake db:migrate não gerar as foreignkeys… é normal isso? Pelo que pesquisei ele não gera mesmo…

Estou usando o rails 3.2

Obrigado!!

ricardo.valeriano

Beleza @Dennys?

Então, pelo que entendi sua preocupação é com a geração de constraints no banco para garantir a integridade referencial, é isso? Nesse caso, realmente as migrations não geram essas constraints. Mas você pode usar a gem foreigner: https://github.com/matthuhiggins/foreigner que é justamente para ajudar com isso.

Boa sorte nos estudos! Qualquer dúvida, vamos falando.

Dennys

Obrigado Ricardo!

Estou gostando bastante! Da para fazer webapps muito rápido!

Abraços!

Criado 25 de julho de 2012
Ultima resposta 30 de jul. de 2012
Respostas 6
Participantes 2