2013-05-27 6 views
0

J'ai ce code:Rails - attribut est pas enregistré

if request.post? and @user.save 
     @contact.user_id = @user.id 
     @contact.save 
     flash[:notice] = l(:e_user_saved) 
     redirect_to :action => 'list' 
end 

Mais quand le contact des rails permet d'économiser, la user_id reste nulle.

Lorsque je débogue, je vois qu'il assigne la valeur, mais quand il enregistre, il enregistre null. Pourquoi???

+0

Voulez-vous dire qu'il est 'nil' dans le' contact', la 'user', ou les deux? Quelle base de données utilisez-vous? Est-il configuré pour générer automatiquement un 'id' (clé primaire) lors de la création de l'enregistrement> – lurker

+3

Que retourne' save'? Remplacez-le par 'save!'. Peut-être que les validations échouent –

+0

Oui, bien sûr !!! –

Répondre

1

contact.save a probablement échoué. Vous ne vérifiez pas la valeur de retour, donc vous ne savez pas.

Vérifiez le code contact.errors pour voir ce qui a mal tourné.

Vous devriez probablement contact.save dans un bloc if:

if @contact.save 
    flash[:notice] = l(:e_user_saved) 
    redirect_to :action => 'list' 
else 
    # some error handling 
    # and redirect somewhere else 
end 
Questions connexes