Question

Je devine qu'il ya probablement un moyen plus facile de faire ce que je fais pour que le code est moins difficile à manier.

J'ai eu du mal à comprendre comment utiliser la méthode revert_to ... je voulais quelque chose où je pourrais appeler en même temps deux versions différentes, mais cela ne semble pas être la façon dont fonctionne de vestal_versions.

Ce code fonctionne, mais je me demande si je fais quelque chose de plus difficile qu'il doit être et je voudrais savoir avant de plonger plus profondément.

@article = Article.find(params[:id])

if params[:versions]
  v = params[:versions].split(',')
  @article.revert_to(v.first.to_i)
  @content1 = @article.content
  @article.revert_to(v.last.to_i)
  @content2 = @article.content
end

Dans le cas où vous vous demandez, j'utilise en conjonction avec cette HTMLDiff pour obtenir les changements de version.

<div id="content">
  <% if params[:versions] %>
    <%= Article.diff(@content1, @content2) %>
  <% else %>
    <%= @article.content %>
  <% end %>
</div>
Était-ce utile?

La solution

Je pense que vous êtes à la recherche de la méthode de changes_between qui fournit vestal_versions.

@article = Article.find(params[:id])

if params[:versions]
  v = params[:versions].split(',')
  @article_changes = @article.changes_between(v.first.to_i, v.last.to_i)
end

alors @article_changes est un hachage des changements entre les versions. Quelque chose comme

{"content" => ["first version content", "second version content"]}

Peut-être différent en fonction de ce que vous avez versionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top