Bonjour à tous,

Dans mon application, quand un utilisateur est en cours d'édition sur une
page (vue 'edit'), je souhaite empêcher (ou afficher un avertissement) un
autre utilisateur d'accéder à cette page d'édition (je préfère éviter une
solution prévenant l'écrasement de données seulement au moment où
l'utilisateur soumet les données de son formulaire).

Pour cela mon idée est de mettre un marqueur en base de données quand un
premier utilisateur accède à une page d'édition, et retirer ce marquer quand
il quitte cette page d'édition. Quand un utilisateur souhaite accéder à une
page d'édition, je le bloque si un tel marqueur existe pour cette page.

Mon problème est de détecter quand un utilisateur quitte une page en cours
d'édition, car il existe plusieurs façons pour un utilisateur de quitter
cette page : après une sauvegarde réussie, en suivant un lien vers une autre
page, quand il ferme la fenêtre d'édition dans son navigateur, quand il
ferme son navigateur... J'ai l'impression que c'est impossible en pratique
de détecter tous ces cas de figure et les reporter au serveur pour retirer
le marqueur.

Aussi pour détecter si un utilisateur est toujours sur sa vue edit, je pense
ajouter une information "date" aux marqueurs en BDD, et mettre un
periodically_call_remote dans mes vues edit qui rafraichirait la date du
marquer correspondant. Je ne bloquerais l'accès à une page d'édition pour un
autre utilisateur que si le marqueur correspondant a une date relativement
récente.

Ça me paraît faisable mais ça reste un peu alambiqué, aussi je suis ouvert à
toute suggestion pour simplifier cette implémentation voir utiliser une
autre façon de faire :)

Cordialement,
Florent

-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]

Répondre à