2010-11-12 10 views
2

Je m'attendais à ce que ce soit l'union de tous les changements entre 2 versions. (En utilisant des versions vestales 1.0.2)Vestal Versions changes_between ne fonctionne pas pour moi

ruby-1.8.7-p174 > contact.version 
=> 12 
ruby-1.8.7-p174 > contact.latest_approved_version 
=> 8 
ruby-1.8.7-p174 > contact.changes 
=> {} 
ruby-1.8.7-p174 > contact.versions.last.changes 
=> {"first_name"=>["I changed this one baby", "AdminF"]} 
ruby-1.8.7-p174 > contact.changes_between(8,12) 
=> {} 
ruby-1.8.7-p174 > contact.changes_between(9,12) 
=> {"deleted"=>[true, false]} 
ruby-1.8.7-p174 > contact.changes_between(10,12) 
=> {} 
ruby-1.8.7-p174 > contact.changes_between(11,12) 
=> {"first_name"=>["I changed this one baby", "AdminF"]} 

Comme vous pouvez le voir aucun changement entre 8 et 12, mais les changements entre certains d'entre eux. La chose étrange est je jure que cela fonctionnait hier!

Voici la méthode Vestal utilise, je ne suis pas sûr de ce que le problème est:

def changes_between(from, to) 
    from_number, to_number = versions.number_at(from), versions.number_at(to) 
    return {} if from_number == to_number 
    chain = versions.between(from_number, to_number).reject(&:initial?) 
    return {} if chain.empty? 

    backward = from_number > to_number 
    backward ? chain.pop : chain.shift unless from_number == 1 || to_number == 1 

    chain.inject({}) do |changes, version| 
     changes.append_changes!(backward ? version.changes.reverse_changes : version.changes) 
    end 
    end 

Répondre

0

Il est possible qu'il n'y a rien de mal avec l'exemple que vous avez fourni. Si par exemple il n'y a pas de différences entre les versions 8 et 12. Même s'il y a eu des changements dans les versions 9, 10 et 11, la méthode changes_between ne montrera aucun changement si les attributs du modèle ont été ramenés aux mêmes valeurs.

Je pense que la meilleure façon de vérifier est de vérifier:

>> contact.revert_to(8) 
=> "8" 
>> contact.inspect 
=> "#<Contact ... >" 
>> contact.revert_to(12) 
=> "12" 
>> contact.inspect 
=> "#<Contact ... >" 

Et puis comparer la sortie. Je ne peux pas penser à une autre raison pour le résultat que vous avez décrit. D'ailleurs, l'appel que vous avez fait à "last_approved_version", est-ce quelque chose que vous avez ajouté manuellement à votre modèle ou est-ce quelque chose de intégré dans vestal_versions? Parce que j'utilise aussi le 1.0.2 vestal_version et je ne trouve aucune référence à cela. Donc, si c'est vraiment quelque chose de intégré alors nous avons probablement différentes fourchettes de vestal_version et cela pourrait être la cause ...

+0

oui, j'ai ajouté la dernière version approuvée. Si vous voyez ma sortie de console, vous pouvez voir les changements entre chaque version, donc je suis sûr à 99,99% que les changements existent. Voir les changements entre 11-12 – Joelio

+0

Tout ce que je dis, c'est qu'en regardant votre sortie, il est possible que les versions 8 et 12 ressemble exactement la même chose. Si vous pouvez publier le résultat de changes_between (8,9), changes_between (9,10), changes_between (10,11) et changes_between (11,12), il sera probablement plus facile de suivre les changements apportés à chaque version. Et comme je l'ai mentionné plus tôt, une inspection simple révélera facilement la vérité. – DanneManne

+0

Man votre droit, merci, je suppose que l'évidence était la réponse :) – Joelio

Questions connexes