Moduł Mongoid::Versioning dodaje do dokumentu pole o nazwie wersja typu Integer, które rejestruje wersję bieżącego dokumentu, zaczynając od 1, aż do maksimum (jeśli jest zdefiniowane). Ponadto będziesz mieć wbudowane „wersje” dokumentu, które zostaną utworzone. Następnie istnieje wywołanie zwrotne before_save, które zajmuje się wersjonowaniem za Ciebie.
Generalnie polecam maksymalnie, ale to zależy od Ciebie. Jeśli chodzi o to, jak się do nich dostać, cóż, nie podałeś przykładowego dokumentu, więc przejdźmy do bardzo prostego artykułu jako przykładu:
#Make an empty post, just a title, version 1
post = Post.create(:title => "Hello World")
# Now add some "content" and save, version 2
post.content = "Woo - content"
post.save
To da nam dokument podobny do tego:
{
"title": "Hello World",
"content": "Woo - content",
"comments": [
]
"version": 2
"versions": [
{ "title": "Hello World", "version": 1 }
]
}
Teraz wystarczy użyć standardowych mechanizmów wyszukiwania, aby się do niego dostać:
post = Post.find(:first, :conditions => {:title => "Hello World"})
Pobierz z tego najnowszą wersję, a następnie możesz programowo wyszukiwać poprzednie wersje. Opublikowałbym wyniki, ale w tej chwili nie mam skonfigurowanej próbki.
Podobnie wystarczy uruchomić db.namespace.find() w oparciu o tytuł, pola wersji, jeśli chcesz to zrobić za pośrednictwem powłoki.
Mam nadzieję, że to ma sens.