Le 16 mars 2010 12:01, Guillaume Betous <[email protected]> a écrit
:

>  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...)
>


Merci Michel & Guillaume pour vos réponses ! Après consultation des
utilisateurs de l'appli, ta solution Guillaume leur suffit. Du coup c'est
celle que j'ai retenue car c'est plus simple à implémenter.

Cordialement,
Florent


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

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