Dúvido associações belongs_to

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!

Olá @Dennys, tudo em ordem?

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

[quote=ricardo.valeriano]Olá @Dennys, tudo em ordem?

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

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!!

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?

[quote=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?[/quote]

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!!

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.

Obrigado Ricardo!

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

Abraços!