2011-06-29 3 views
1

Je viens de terminer RailsCasts 196 et 197, traitant des modèles imbriqués dans les formulaires. En examinant les attributs 'name' générés des éléments de formulaire, il est tout à fait clair que les nombres entre parenthèses représentent les positions de tableau, plutôt que les identifiants de clés primaires. Par exemple, dans le cas de:Rails 3 accepte_nested_attributes_for et la concurrence

name="survey[questions_attributes][0][answers_attributes][2][content]" 

« 0 » indique que la première question apparaissant sous la forme, plutôt que de la question avec id = 0 (ce qui serait illégal dans tous les cas). De même, '2' indique la troisième réponse, pas la réponse avec id = 2. Que se passe-t-il si un utilisateur supprime la question 0 alors qu'un autre utilisateur modifie la question 1. Après la suppression, la question 1 sera à la position 0 du tableau. Cela posera-t-il un problème? Pourquoi ne pas simplement utiliser les clés primaires pour cela?

Merci!

Répondre

0

Je ne peux pas reproduire cela pour le moment, mais pouvez-vous étudier le contenu de survey[questions_attributes][0]? Je suppose que c'est un hash qui contient l'ID de la question, auquel cas votre scénario devrait fonctionner correctement. Au cas où l'utilisateur A supprime la question no. 0 pendant que l'utilisateur B édite cela devrait entraîner une erreur de non-réponse pour l'utilisateur B.

+0

Ah, oui. Je vois que les valeurs d'id sont incorporées dans des entrées de forme HTML cachées, par exemple: 'name =" survey [questions_attributs] [1] [id] "type =" hidden "value =" 6 "'. Merci! – gederer