±le 13.11.2006 10:36:07 -0400, Bolo M. a dit :
| Bonjour,
|
| Je dois mettre en place une fonctionnalité permettant aux utilisateur de
| annuler leur modification
| Ex A modifie un document ou le supprime mais il se rend compte que ce n’est
| pas le bon. il aimerais revenir en arrière en tapant sur undo.
|
| Je demande pas bien sur le code pour faire cette fonctionnalité mais plus
| des indications
Ben, la seule manière correcte de le faire est de versionner les
enregistrements, doit y’avoir un acts_as_version qui existe.
Il existe le plugin Acts_as_versioned créé par Rick O… Je ne
l’ai jamais utilisé mais, si tu veux un exemple, ce plugin est
implémenté dans Mephisto le “Blogging system” du même auteur.
Les suppressions elles ne
sont pas supprimées mais simplement “marquées comme supprimées”,
ce qui
permet de fouiller dans les documents supprimés et d’enlever la
marque.
Je pense que cette solution est vraiment interessante
Je te remercie
Pour un exemple d’implémentation de cette fonctionnalité regarde du
coté de acts_as_paranoid[1]
Je dois mettre en place une fonctionnalité permettant aux utilisateur
de annuler leur modification
Règle 1 : na jamais proposer ou accepter ce genre de fonctionnalités dans
une appli Web, c’est l’horreur à gérer.
Pour l’implémentation tu as deux possibilités :
tu ne proposes pas d’undo mais tu gardes un historique versionné de
toutes les modifications. Il n’aura pas le “annuler” mais il pourra
trouver la version précédente et la republier. Les suppressions elles ne
sont pas supprimées mais simplement “marquées comme supprimées”, ce qui
permet de fouiller dans les documents supprimés et d’enlever la marque.
Tu proposes vraiment un undo, à chaque action tu stockes l’action en
question dans une table, les anciennes valeurs et les entrées supprimées
dans un fichier quelque part sur le disque. Quand on tente l’annulation
tu
dépiles les dernières entrées de ta table pour restaurer les données. Le
problème c’est qu’il te faudra une logique d’annulation et de sauvegarde
spécifique à chaque action que peut faire ton utilisateur. Tu n’as pas
fini de développer et tu as toutes les chances d’oublier des cas.
–
Eric D.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.