C'est ce que je pensais : en effet il n'y a que très peu de lignes de codes spécifiques en fait.

Par contre, comme d'habitude, la solution passe parfois par la question "ai-je vraiment besoin de ça ?". Si tu estimes le cas possible (facile : si tu as plusieurs utilisateurs, c'est toujours possible) mais peu probable, tu peux te limiter à détecter le problème, mais à ne pas le corriger.

Par exemple, quand tu entres en édition, tu lis la version de l'enregistrement. Juste avant de sauver, tu vérifie qu'il n'a pas bougé. si il a bougé entre temps, tu te limites à dire "enregistrement modifié par ailleurs, je refuse d'écraser", et c'est aux utiliteurs de se débrouiller.

C'est évidemment bcp plus sommaire comme solution, mais si ça suffit à ton cas (sans compter le fait d'être indépendant de _javascript_...)

gUI

Michel Belleville a écrit :
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]

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