Bonjour Florent,

Sincèrement c'est la seule vraie solution pas trop moche à ton problème.

Cordialement,
Michel Belleville


2010/3/16 Florent Florent <[email protected]>

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

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