2012-01-28 115 views
2

我在我的基于Mongoid的类中包含了Mongoid :: Versioning模块。检查文档的以前版本或化身的最佳方法是什么?我希望能够看到它的历史。这可以通过rails console或MongoDB shell。什么是查看文档历史记录最简单的方法?Mongoid ::版本控制 - 如何检查以前的版本?

回答

7

Mongoid :: Versioning模块将一个名为Integer类型的字段添加到文档中,该字段记录当前文档的版本,从1开始,直到最大(如果已定义)。此外,您将拥有将要创建的嵌入式文档“版本”。然后有一个before_save回调,它负责为你提供版本控制。

一般我会建议一个最大值,但这取决于你。在如何在他们得到条款,但你也没有举一个例子文件,让我们一起去一个很简单的文章为例:

#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 

这将会给我们的文件是这样的:

{ 
    "title": "Hello World", 
    "content": "Woo - content", 
    "comments": [ 
    ] 
    "version": 2 
    "versions": [ 
    { "title": "Hello World", "version": 1 } 
    ] 
} 

现在,你只需要使用标准查找机制来得到它:

post = Post.find(:first, :conditions => {:title => "Hello World"}) 

下载最新版本出来的那个,然后你可以以编程方式搜索以前的版本。我会发布输出,但我目前没有设置示例。

类似地,如果您希望通过shell执行操作,则只需根据标题,版本字段运行db.namespace.find()。

希望这是有道理的。