2010-10-19 2 views
0

J'ai un modèle 'User' qui a une relation has_many avec un modèle 'Number' via un modèle 'user_number' de table de jointure. J'utilise:Rails 3 formes imbriquées avec has_many: through, l'entrée dans la table jointe n'est pas supprimée après la mise à jour

accepts_nested_attributes_for :numbers, :allow_destroy => true 

dans le modèle 'User'. Tout fonctionne bien sauf que chaque fois que je supprime un numéro d'un utilisateur dans le formulaire d'édition, le numéro associé est supprimé correctement dans la table 'number', mais pas l'entrée dans la table de jointure 'user_number'.

Dans l'action du contrôleur de mise à jour j'utilise seulement ceci:

... 
if @user.update_attributes(params[:user]) 
... 

Comment puis-je forcer rails à supprimer également l'entrée associée dans la table de jointure?

Répondre

1

Vous devez avoir l'utilisateur accept_nested_attributes_for: join_class,: allow_destroy => true. Ensuite, vous supprimez l'association. L'idée derrière un has_many: through est que vous ne supprimez pas la partie m du mappage n-> m sauf s'il n'y a plus d'autres associations.

+0

@Hadi S. - Si cela a fonctionné pour vous, s'il vous plaît upvote et marquer comme correct? – sethvargo

Questions connexes